| 1 |
<?php |
| 2 |
|
| 3 |
// Exit if accessed directly |
| 4 |
if ( !defined( 'ABSPATH' ) ) exit; |
| 5 |
|
| 6 |
/** |
| 7 |
* Render Booking Calendar 11.8 What's New content. |
| 8 |
* |
| 9 |
* Booking Modes and the Full-Day Form Builder template are available in every |
| 10 |
* edition. Seasonal Availability and the Business Large Searchable Resources |
| 11 |
* catalog remain protected by their existing feature, edition, and current-user |
| 12 |
* gates. Image placeholders must be replaced by verified, edition-appropriate |
| 13 |
* captures before release. |
| 14 |
* |
| 15 |
* @param object $obj Welcome-page renderer and image loader. |
| 16 |
* |
| 17 |
* @return void |
| 18 |
*/ |
| 19 |
function wpbc_welcome_section_11_8( $obj ) { |
| 20 |
|
| 21 |
$section_parameters = array( 'version_num' => '11.8', 'show_expand' => false ); |
| 22 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 23 |
$obj->expand_section_start( $section_parameters ); |
| 24 |
?> |
| 25 |
<div class="wpbc_wn_container"> |
| 26 |
<div class="wpbc_wn_section" style="gap: 10px 50px;"> |
| 27 |
<h2><?php echo( '2 New Full-Day Booking Form Templates' ); ?></h2> |
| 28 |
|
| 29 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 30 |
<img |
| 31 |
src="<?php echo esc_attr( $obj->section_img_url( '11.8/wp_booking_calendar__form_2_columns_hints_full_days.png' ) ); ?>" |
| 32 |
alt="<?php echo esc_attr( 'Two-column full-day booking form with a calendar, date summary, and customer details' ); ?>" |
| 33 |
style="margin:10px 0;width:98%;" |
| 34 |
/> |
| 35 |
</div> |
| 36 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 37 |
<ul> |
| 38 |
<li><strong><?php echo( 'Start with a clear two-column layout.' ); ?></strong> <?php echo( 'Customers select dates in the calendar, then review their Check-in, Check-out, and Days beside the customer details.' ); ?></li> |
| 39 |
<li><strong><?php echo( 'Vertical full-day layout.' ); ?></strong> <?php echo( 'Vertical full-day booking form with a ability to use a two-month calendar and date summary' ); ?></li> |
| 40 |
<li><strong><?php echo( 'Designed for full-day bookings.' ); ?></strong> <?php echo( 'Use the live date summary with your saved full-day or changeover settings to make each selection easier to understand.' ); ?></li> |
| 41 |
<li><strong><?php echo( 'Apply it when you need it.' ); ?></strong> <?php echo( 'The templates are available in Form Builder without replacing existing forms or changing first-install defaults. Confirm its starter Terms links before publishing.' ); ?></li> |
| 42 |
</ul> |
| 43 |
</div> |
| 44 |
</div> |
| 45 |
|
| 46 |
<div class="wpbc_wn_section" style="gap: 10px 50px;"> |
| 47 |
<h2><?php echo( 'New Seasonal Availability Catalog' ); ?></h2> |
| 48 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 49 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.8/wp_booking_calendar__season_availability_review_placeholder_3.png' ) ); ?>" alt="<?php echo esc_attr( 'Availability listing with Resource names, default-status labels, search and view controls' ); ?>" style="margin:5px 0;width:100%;" /> |
| 50 |
<p style="text-align:center;font-style: italic;font-size:0.8em;"><strong><?php echo 'Minimum edition:'; ?></strong> <?php echo 'Booking Calendar Business Medium or higher.'; ?></p> |
| 51 |
</div> |
| 52 |
<div class="wpbc_wn_col" style="flex: 1 1 20%;margin: 0;padding: 0;"> |
| 53 |
|
| 54 |
<ul> |
| 55 |
<li data-wpbc-availability-feature="overview"><strong><?php echo( 'Availability at a glance.' ); ?></strong> <?php echo( 'Find your Resources in a clear list or Card view. See each Resource’s default availability below its name, search for the one you need, and choose the columns you want to see.' ); ?></li> |
| 56 |
<li data-wpbc-availability-feature="preview"><strong><?php echo( 'See your seasonal dates clearly.' ); ?></strong> <?php echo( 'Green dates are available and gray dates are unavailable according to your seasonal settings. Hover over a Resource or focus a control in its row to see which Season applies. The preview shows seasonal settings, not existing bookings or remaining capacity.' ); ?></li> |
| 57 |
</ul> |
| 58 |
</div> |
| 59 |
</div> |
| 60 |
<div class="wpbc_wn_section" style="gap: 10px 50px;"> |
| 61 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> |
| 62 |
<ul> |
| 63 |
<li data-wpbc-availability-feature="bulk"><strong><?php echo( 'Update selected Resources together.' ); ?></strong> <?php echo( 'Select Resources and choose Edit selected to set their default availability, add one Season exception, or remove one Season exception. Other assignments are kept. Review every proposed change before applying; updated Resources are highlighted after a successful save.' ); ?></li> |
| 64 |
</ul> |
| 65 |
</div> |
| 66 |
</div> |
| 67 |
<div class="wpbc_wn_section" style="gap: 10px 50px;"> |
| 68 |
<div class="wpbc_wn_col" style="flex: 1 1 20%;margin: 0;padding: 0;"> |
| 69 |
<ul> |
| 70 |
<li data-wpbc-availability-feature="inspector"><strong><?php echo( 'Edit availability without leaving the list.' ); ?></strong> <?php echo( 'Open a Resource in the new sidebar editor. Choose its default, add Season exceptions, turn them on or off, and preview their dates. A plain-language overview explains the result before you review and apply your changes.' ); ?></li> |
| 71 |
<li data-wpbc-availability-feature="inline"><strong><?php echo( 'Change defaults directly in the list.' ); ?></strong> <?php echo( 'Choose Edit rows to change default availability for several Resources without opening each one. Changed rows are marked so you can check your work, then review the effect on existing Seasons before applying.' ); ?></li> |
| 72 |
</ul> |
| 73 |
</div> |
| 74 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 75 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.8/wp_booking_calendar__season_availability__inspector_edit_season_availability_3.png' ) ); ?>" alt="<?php echo esc_attr( 'Seasonal Availability inspector showing default availability, ordered Season exceptions and a selected Season date preview' ); ?>" style="margin:5px 0;width:100%;" /> |
| 76 |
<p style="text-align:center;font-style: italic;font-size:0.8em;"><strong><?php echo 'Minimum edition:'; ?></strong> <?php echo 'Booking Calendar Business Medium or higher.'; ?></p> |
| 77 |
</div> |
| 78 |
</div> |
| 79 |
|
| 80 |
|
| 81 |
<div class="wpbc_wn_section" style="gap: 10px 50px;"> |
| 82 |
<h2><?php echo( 'New Searchable Resources Catalog' ); ?></h2> |
| 83 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 84 |
<?php // Replace this placeholder with the final 11.8 Searchable Resources Catalog screenshot before release. ?> |
| 85 |
<img |
| 86 |
src="<?php echo esc_attr( $obj->section_img_url( '11.8/wp_booking_calendar__searchable_resources_catalog_placeholder.png' ) ); ?>" |
| 87 |
alt="<?php echo esc_attr( 'Searchable Resources Catalog with status filters, presentation columns, and Resource editing controls' ); ?>" |
| 88 |
style="margin:10px 0;width:98%;" |
| 89 |
/> |
| 90 |
<p style="text-align:center;font-style: italic;font-size:0.8em;"><strong><?php echo 'Minimum edition:'; ?></strong> <?php echo 'Booking Calendar Business Large or higher.'; ?></p> |
| 91 |
</div> |
| 92 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 93 |
<ul> |
| 94 |
<li><strong><?php echo( 'Control each search result in one place.' ); ?></strong> <?php echo( 'Open the direct Search Availability > Searchable Resources link, then edit Search visibility, result title, description, image, landing page, and supported criteria from the Inspector or directly in catalog rows. Search form, results, and options each have their own neighboring link.' ); ?></li> |
| 95 |
<li><strong><?php echo( 'Find the right Resources quickly.' ); ?></strong> <?php echo( 'Switch between All, Searchable, and Not searchable Resources, then use focused table views, compact rows, or image-led Cards.' ); ?></li> |
| 96 |
<li><strong><?php echo( 'Review changes before saving.' ); ?></strong> <?php echo( 'Stage direct, inline, and selected-Resource updates, review the affected fields, and apply only the changes you approve.' ); ?></li> |
| 97 |
</ul> |
| 98 |
</div> |
| 99 |
</div> |
| 100 |
|
| 101 |
<div class="wpbc_wn_section" style="gap: 10px 50px;"> |
| 102 |
<h2><?php echo( 'More Reliable Administration Modes' ); ?></h2> |
| 103 |
|
| 104 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 105 |
<ul> |
| 106 |
<li><strong><?php echo( 'Choose the view that fits your work.' ); ?></strong> <?php echo( 'Switch between Classic, Appointments, and Rentals while continuing to use the familiar Booking Calendar pages and saved configuration.' ); ?></li> |
| 107 |
<li><strong><?php echo( 'See the pages available to you.' ); ?></strong> <?php echo( 'Each mode shows the pages provided by your installed edition and add-ons while safely omitting unavailable features.' ); ?></li> |
| 108 |
</ul> |
| 109 |
</div> |
| 110 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> |
| 111 |
<ul> |
| 112 |
<li><strong><?php echo( 'Continue where you were working.' ); ?></strong> <?php echo( 'When possible, switching modes keeps the current Booking Calendar page and section, with a safe destination used when the equivalent page is unavailable.' ); ?></li> |
| 113 |
<li><strong><?php echo( 'Complete Setup in five steps.' ); ?></strong> <?php echo( 'The streamlined Setup flow now finishes in Form Builder, and the overlapping floating Setup Bar is disabled by default.' ); ?></li> |
| 114 |
</ul> |
| 115 |
</div> |
| 116 |
</div> |
| 117 |
|
| 118 |
</div> |
| 119 |
<?php |
| 120 |
$obj->expand_section_end( $section_parameters ); |
| 121 |
} |
| 122 |
|
| 123 |
/** |
| 124 |
* What's New section for Booking Calendar 11.7. |
| 125 |
* |
| 126 |
* @param object $obj Welcome-page renderer. |
| 127 |
* |
| 128 |
* @return void |
| 129 |
*/ |
| 130 |
function wpbc_welcome_section_11_7( $obj ) { |
| 131 |
|
| 132 |
$section_param_arr = array( 'version_num' => '11.7', 'show_expand' => true ); |
| 133 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 134 |
$prices_inspector_sections = array( |
| 135 |
array( |
| 136 |
'title' => 'Base Cost', |
| 137 |
'image' => '11.7/wp_booking_calendar__prices_catalog_base_cost_placeholder.png', |
| 138 |
'alt' => 'Prices inspector showing the Base Cost editor with a decimal amount and synchronized slider', |
| 139 |
'minimum_edition' => 'Booking Calendar Business Medium or higher.', |
| 140 |
'purpose' => 'Use Base Cost to define the normal starting price for this Resource before date, duration, deposit, and booking-time adjustments are applied.', |
| 141 |
'description' => 'Enter an exact Resource price, including decimals, or use the synchronized slider. The inspector also shows the owner currency and charging period that control how the value is understood.', |
| 142 |
), |
| 143 |
array( |
| 144 |
'title' => 'Seasonal Rates', |
| 145 |
'image' => '11.7/wp_booking_calendar__prices_catalog_seasonal_rates_placeholder.png', |
| 146 |
'alt' => 'Prices inspector showing ordered Seasonal Rates with On and Off controls', |
| 147 |
'minimum_edition' => 'Booking Calendar Business Medium or higher.', |
| 148 |
'purpose' => 'Use Seasonal Rates when the same Resource should cost more or less on holidays, weekends, high seasons, or other reusable date periods.', |
| 149 |
'description' => 'Add fixed or percentage Seasonal Rates, switch saved rates On or Off without losing their settings, search authorized Seasons, and control evaluation order with drag or keyboard actions.', |
| 150 |
), |
| 151 |
array( |
| 152 |
'title' => 'Duration-Based Costs', |
| 153 |
'image' => '11.7/wp_booking_calendar__prices_catalog_duration_costs_placeholder.png', |
| 154 |
'alt' => 'Prices inspector showing ordered Duration-Based Cost rules and a separate LAST-day value', |
| 155 |
'minimum_edition' => 'Booking Calendar Business Medium or higher.', |
| 156 |
'purpose' => 'Use Duration-Based Costs when the price should change according to how many days a customer books.', |
| 157 |
'description' => 'Build ordered From, For, Together, and LAST rules with fixed, percentage, or added amounts. Optional Season conditions, synchronized controls, and separate LAST-day previews make each rule easier to understand.', |
| 158 |
), |
| 159 |
array( |
| 160 |
'title' => 'Partial Payment', |
| 161 |
'image' => '11.7/wp_booking_calendar__prices_catalog_partial_payment_placeholder.png', |
| 162 |
'alt' => 'Prices inspector showing a Partial Payment preview with due-now and balance amounts', |
| 163 |
'minimum_edition' => 'Booking Calendar Business Medium or higher.', |
| 164 |
'purpose' => 'Use Partial Payment when customers should pay a deposit at booking and the remaining balance later instead of paying the full total immediately.', |
| 165 |
'description' => 'Configure a percentage or fixed deposit with optional lead-time and Season conditions. The live preview separates the configured value from the amount currently due and shows the remaining balance and calculation basis.', |
| 166 |
), |
| 167 |
array( |
| 168 |
'title' => 'Early Booking Adjustment', |
| 169 |
'image' => '11.7/wp_booking_calendar__prices_catalog_early_booking_placeholder.png', |
| 170 |
'alt' => 'Prices inspector showing an Early Booking discount preview and qualifying date range', |
| 171 |
'minimum_edition' => 'Booking Calendar Business Medium or higher.', |
| 172 |
'purpose' => 'Use Early Booking Adjustment to encourage advance reservations by reducing the price when check-in is sufficiently far away.', |
| 173 |
'description' => 'Offer fixed or percentage reductions for sufficiently early check-ins. The date ruler shows site today, the inclusive threshold, the selected check-in, and whether the authorized Season condition applies.', |
| 174 |
), |
| 175 |
array( |
| 176 |
'title' => 'Late Booking Adjustment', |
| 177 |
'image' => '11.7/wp_booking_calendar__prices_catalog_last_minute_placeholder.png', |
| 178 |
'alt' => 'Prices inspector showing a Last-Minute discount preview and near-term qualifying date range', |
| 179 |
'minimum_edition' => 'Booking Calendar Business Medium or higher.', |
| 180 |
'purpose' => 'Use Late Booking Adjustment to help fill near-term availability by reducing the price for check-ins inside a short booking window.', |
| 181 |
'description' => 'Offer fixed or percentage reductions for near-term check-ins. The preview clearly shows the inverse date range and exclusive boundary, while saving this section leaves Early Booking settings unchanged.', |
| 182 |
), |
| 183 |
); |
| 184 |
|
| 185 |
$obj->expand_section_start( $section_param_arr ); |
| 186 |
?> |
| 187 |
<div class="wpbc_wn_container"> |
| 188 |
<div class="wpbc_wn_section"> |
| 189 |
<h2><?php echo 'A New Prices Catalog'; ?></h2> |
| 190 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 191 |
<?php // Replace this placeholder with the final 11.7 Prices Catalog screenshot before release. ?> |
| 192 |
<img |
| 193 |
src="<?php echo esc_attr( $obj->section_img_url( '11.7/wp_booking_calendar__prices_catalog_overview_placeholder.png' ) ); ?>" |
| 194 |
alt="<?php echo 'Prices Catalog showing Resource pricing summaries, previews, filters, layouts, and the right-side inspector'; ?>" |
| 195 |
style="margin:10px 0;width:98%;" |
| 196 |
/> |
| 197 |
</div> |
| 198 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 199 |
<p><strong><?php echo 'Minimum edition:'; ?></strong> <?php echo 'Booking Calendar Business Medium or higher.'; ?></p> |
| 200 |
<p><strong><?php echo 'Why use it:'; ?></strong> <?php echo 'Use the Prices Catalog to review and manage all Resource-owned pricing rules from one page instead of opening several separate pricing screens.'; ?></p> |
| 201 |
<ul> |
| 202 |
<li><?php echo 'Manage Resource pricing from the familiar Booking Calendar > Prices page with search, filtering, sorting, paging, layouts, customizable columns, and clear pricing previews.'; ?></li> |
| 203 |
<li><?php echo 'Expand a Resource to open direct links for Base Cost, Seasonal Rates, Duration-Based Costs, Partial Payment, Early Booking, and Last-Minute adjustments, together with owner Pricing context and authorized external settings.'; ?></li> |
| 204 |
<li><?php echo 'The right-side inspector keeps each pricing area focused, validates current authorized values before saving, and protects changes made by another request.'; ?></li> |
| 205 |
<li><?php echo 'Need more time before switching? Enable Use legacy catalog pages to temporarily restore the previous Prices listing without migrating or resetting pricing data.'; ?></li> |
| 206 |
<li><?php echo 'Catalog previews cover Resource-owned pricing. Booking Form option costs, coupons, taxes, payment fees, additional Resources, and other later adjustments can still change the final booking total.'; ?></li> |
| 207 |
</ul> |
| 208 |
</div> |
| 209 |
</div> |
| 210 |
|
| 211 |
<?php foreach ( $prices_inspector_sections as $prices_inspector_section ) { ?> |
| 212 |
<div class="wpbc_wn_section"> |
| 213 |
<h2><?php echo esc_html( $prices_inspector_section['title'] ); ?></h2> |
| 214 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 215 |
<?php // Replace this placeholder with the final 11.7 inspector screenshot before release. ?> |
| 216 |
<img |
| 217 |
src="<?php echo esc_attr( $obj->section_img_url( $prices_inspector_section['image'] ) ); ?>" |
| 218 |
alt="<?php echo esc_attr( $prices_inspector_section['alt'] ); ?>" |
| 219 |
style="margin:10px 0;width:98%;" |
| 220 |
/> |
| 221 |
</div> |
| 222 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 223 |
<p><strong><?php echo 'Minimum edition:'; ?></strong> <?php echo esc_html( $prices_inspector_section['minimum_edition'] ); ?></p> |
| 224 |
<p><strong><?php echo 'Why use it:'; ?></strong> <?php echo esc_html( $prices_inspector_section['purpose'] ); ?></p> |
| 225 |
<p><?php echo esc_html( $prices_inspector_section['description'] ); ?></p> |
| 226 |
</div> |
| 227 |
</div> |
| 228 |
<?php } ?> |
| 229 |
|
| 230 |
<div class="wpbc_wn_section"> |
| 231 |
<h2><?php echo 'Clearer Left Sidebar Navigation'; ?></h2> |
| 232 |
<div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 10px 0;"> |
| 233 |
<p><strong><?php echo 'Minimum edition:'; ?></strong> <?php echo 'Booking Calendar Free. This improvement is available in every edition.'; ?></p> |
| 234 |
<p><strong><?php echo 'Why use it:'; ?></strong> <?php echo 'Use the grouped navigation to find administration pages faster and keep the current page visible in long menus.'; ?></p> |
| 235 |
<ul> |
| 236 |
<li><?php echo 'The grouped left menu keeps Appointments, Services, Providers, Availability, Pricing, and Settings easier to scan while preserving the familiar WordPress administration area.'; ?></li> |
| 237 |
<li><?php echo 'Long menus automatically bring the exact current page into view, and the Minimize control now remembers and restores the visible sidebar state reliably.'; ?></li> |
| 238 |
</ul> |
| 239 |
</div> |
| 240 |
<div class="wpbc_wn_col" style="flex: 1 1 50%;margin: 10px 0;"> |
| 241 |
<?php // Replace this placeholder with the final 11.7 navigation screenshot before release. ?> |
| 242 |
<img |
| 243 |
src="<?php echo esc_attr( $obj->section_img_url( '11.7/wp_booking_calendar__left_sidebar_navigation_placeholder.png' ) ); ?>" |
| 244 |
alt="<?php echo 'Booking Calendar administration showing the grouped left sidebar navigation and selected page'; ?>" |
| 245 |
style="margin:10px 0;width:98%;" |
| 246 |
/> |
| 247 |
</div> |
| 248 |
</div> |
| 249 |
|
| 250 |
<div class="wpbc_wn_section"> |
| 251 |
<h2><?php echo 'More Improvements in 11.7'; ?></h2> |
| 252 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 253 |
<?php // Replace these placeholders with the final 11.7 Cost correction screenshots before release. ?> |
| 254 |
<img |
| 255 |
src="<?php echo esc_attr( $obj->section_img_url( '11.7/wp_booking_calendar__add_booking_cost_correction_placeholder.png' ) ); ?>" |
| 256 |
alt="<?php echo 'Add Booking inspector showing the Cost correction number and slider controls'; ?>" |
| 257 |
style="margin:10px 0;width:98%;" |
| 258 |
/> |
| 259 |
</div> |
| 260 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 261 |
<p><strong><?php echo 'Minimum edition for Cost correction:'; ?></strong> <?php echo 'Booking Calendar Business Small or higher.'; ?></p> |
| 262 |
<p><strong><?php echo 'Why use it:'; ?></strong> <?php echo 'Use Cost correction when an administrator needs to replace the automatically calculated total for one manually created Booking or Appointment.'; ?></p> |
| 263 |
<ul> |
| 264 |
<li><?php echo 'Optionally set an exact final total while adding a Booking or Appointment. Leave the field empty to keep normal automatic pricing.'; ?></li> |
| 265 |
<li><?php echo 'Applied Cost corrections continue through the established deposit, balance, notification, and cost-note workflow.'; ?></li> |
| 266 |
<li><?php echo 'All editions: Full Screen preferences now remain consistent between Booking Calendar pages, including WordPress installations in subdirectories.'; ?></li> |
| 267 |
<li><?php echo 'All editions: Form Builder Select fields now keep Value different from label turned off after saving and continue synchronizing option values with their labels.'; ?></li> |
| 268 |
<li><?php echo 'Business Medium and higher: Prices Catalog editing keeps Changed indicators compact, and inspector actions retain readable icon spacing in left-to-right and right-to-left layouts.'; ?></li> |
| 269 |
</ul> |
| 270 |
</div> |
| 271 |
</div> |
| 272 |
</div> |
| 273 |
<?php |
| 274 |
$obj->expand_section_end( $section_param_arr ); |
| 275 |
} |
| 276 |
|
| 277 |
/** |
| 278 |
* What's New section for Booking Calendar 11.6. |
| 279 |
* |
| 280 |
* @param object $obj Welcome-page renderer. |
| 281 |
* |
| 282 |
* @return void |
| 283 |
*/ |
| 284 |
function wpbc_welcome_section_11_6( $obj ) { |
| 285 |
$section_param_arr = array( 'version_num' => '11.6', 'show_expand' => true ); |
| 286 |
|
| 287 |
$obj->expand_section_start( $section_param_arr ); |
| 288 |
|
| 289 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 290 |
?> |
| 291 |
<div class="wpbc_wn_container"> |
| 292 |
|
| 293 |
<div class="wpbc_wn_section"> |
| 294 |
<h2><?php echo 'A New Booking Resources Catalog'; ?></h2> |
| 295 |
|
| 296 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 297 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 298 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__booking_resources_catalog_placeholder.png' ) ); ?>" alt="<?php echo 'New Booking Resources catalog'; ?>" style="margin:10px 0;width:98%;" /> |
| 299 |
<div style="text-align: center;font-style: italic;font-size: 0.9em;">This screenshot demonstrates some features available exclusively in the Pro versions (including price, capacity, ...)</div> |
| 300 |
</div> |
| 301 |
|
| 302 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 303 |
<ul> |
| 304 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Find and organize Booking Resources faster with **search, filtering, sorting, pagination, saved views, and customizable columns**.' ) ); ?></li> |
| 305 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Choose the **Default, Compact, or Cards layout** while keeping the same Resource information and management tools.' ) ); ?></li> |
| 306 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Use responsive, keyboard-friendly controls with improved mobile, RTL, wide-table, and shortened-text handling.' ) ); ?></li> |
| 307 |
</ul> |
| 308 |
</div> |
| 309 |
</div> |
| 310 |
|
| 311 |
<div class="wpbc_wn_section"> |
| 312 |
<h2><?php echo( 'A Native Seasons Catalog' ); ?></h2> |
| 313 |
|
| 314 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 315 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 316 |
<img |
| 317 |
src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__seasons_02.png' ) ); ?>" |
| 318 |
alt="<?php echo( 'Seasons catalog showing reusable date rules and their usage' ); ?>" |
| 319 |
style="margin:10px 0;width:98%;" |
| 320 |
/> |
| 321 |
</div> |
| 322 |
|
| 323 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 324 |
<ul> |
| 325 |
<li><?php echo( 'Business Medium and higher editions can search, filter, sort, and paginate Seasons in Default, Compact, or Cards layouts with customizable columns and site-local preferences.' ); ?></li> |
| 326 |
<li><?php echo( 'Create and edit Conditional or Specific-date Seasons in a native right-side inspector with guided controls, color selection, a live twelve-month preview, and the standard Booking Calendar datepicker.' ); ?></li> |
| 327 |
<li><?php echo( 'Select Seasons and review server-approved safe title changes inline or in bulk before applying them.' ); ?></li> |
| 328 |
<li><?php echo( 'Review single or bulk deletion impact, follow authorized links to affected configuration, and keep referenced Seasons protected without silently rewriting related settings.' ); ?></li> |
| 329 |
<li><?php echo( 'Open the reusable Seasons catalog from its dedicated Booking Calendar navigation group between Availability and Pricing; Season Availability remains under Availability, while legacy Season editors remain available through the rollback setting.' ); ?></li> |
| 330 |
</ul> |
| 331 |
</div> |
| 332 |
</div> |
| 333 |
|
| 334 |
<div class="wpbc_wn_section"> |
| 335 |
<h2><?php echo 'Richer Resource Profiles and Publishing'; ?></h2> |
| 336 |
|
| 337 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 338 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 339 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__resource_profiles_and_publishing_placeholder.png' ) ); ?>" alt="<?php echo 'Booking Resource profile and publishing tools'; ?>" style="margin:10px 0;width:98%;" /> |
| 340 |
<div style="text-align: center;font-style: italic;font-size: 0.9em;">This screenshot demonstrates some features available exclusively in the Pro versions (including price, ...)</div> |
| 341 |
</div> |
| 342 |
|
| 343 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 344 |
<ul> |
| 345 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Add a recognizable **title, photo, and description** to each Booking Resource.' ) ); ?></li> |
| 346 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Review booking, publishing, pricing, structure, ownership, and availability information without leaving the catalog.' ) ); ?></li> |
| 347 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Free version users can edit and publish the included Booking Resource directly from the catalog.' ) ); ?></li> |
| 348 |
</ul> |
| 349 |
</div> |
| 350 |
</div> |
| 351 |
|
| 352 |
<div class="wpbc_wn_section"> |
| 353 |
<h2><?php echo 'New Resource Catalog Layouts for Booking Pages'; ?></h2> |
| 354 |
|
| 355 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 356 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 357 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__frontend_resource_catalog_placeholder_01.png' ) ); ?>" alt="<?php echo 'Responsive Booking Resource Catalog layouts'; ?>" style="margin:10px 0;width:98%;" /> |
| 358 |
</div> |
| 359 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 360 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 361 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__frontend_resource_catalog_placeholder_02.png' ) ); ?>" alt="<?php echo 'Responsive Booking Resource Catalog layouts'; ?>" style="margin:10px 0;width:98%;" /> |
| 362 |
</div> |
| 363 |
<div style="text-align: center;font-style: italic;font-size: 0.9em; margin: 0 auto;">These screenshots demonstrates some features available exclusively in the Pro versions.</div> |
| 364 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 365 |
<ul> |
| 366 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Transform the **[booking_resource_selector]** shortcode into a visual, searchable **Resource Catalog** for your booking pages.' ) ); ?></li> |
| 367 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Choose a responsive **Grid or List layout** that adapts to desktop, tablet, and mobile screens.' ) ); ?></li> |
| 368 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Configure Resource images, descriptions, hierarchy, availability, and price summaries to help customers compare their options.' ) ); ?></li> |
| 369 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Customers can search the catalog and select the right Resource before its native booking calendar and form open on the same page.' ) ); ?></li> |
| 370 |
</ul> |
| 371 |
</div> |
| 372 |
</div> |
| 373 |
|
| 374 |
<div class="wpbc_wn_section"> |
| 375 |
<h2><?php echo 'A More Flexible Services Catalog'; ?></h2> |
| 376 |
|
| 377 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 378 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 379 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__services_catalog_placeholder.png' ) ); ?>" alt="<?php echo 'Services catalog layouts and editing tools'; ?>" style="margin:10px 0;width:98%;" /> |
| 380 |
<div style="text-align: center;font-style: italic;font-size: 0.9em;">This screenshot demonstrates some features available exclusively in the Pro versions (including price, ...)</div> |
| 381 |
</div> |
| 382 |
|
| 383 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 384 |
<ul> |
| 385 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Manage Services in responsive **Default, Compact, or Cards layouts**, with search, Provider filtering, sorting, and customizable columns.' ) ); ?></li> |
| 386 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Select Services, edit current server-approved fields inline or in reviewed bulk changes, or use the **right-side Service editor** without leaving the catalog.' ) ); ?></li> |
| 387 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Review changes in the same clear **before-and-after cards** used by Booking Resources and Seasons before applying them.' ) ); ?></li> |
| 388 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Permanently delete unreferenced Services through a reviewed impact and confirmation step; protected Services provide authorized links to affected Appointments or saved Appointment pages.' ) ); ?></li> |
| 389 |
</ul> |
| 390 |
</div> |
| 391 |
</div> |
| 392 |
|
| 393 |
<div class="wpbc_wn_section"> |
| 394 |
<h2><?php echo 'Faster and Safer Resource Management'; ?></h2> |
| 395 |
|
| 396 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 397 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 398 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__resource_management_placeholder.png' ) ); ?>" alt="<?php echo 'Booking Resource editing and review workflow'; ?>" style="margin:10px 0;width:98%;" /> |
| 399 |
<div style="text-align: center;font-style: italic;font-size: 0.9em;">This screenshot demonstrates some features available exclusively in the Pro versions (including price, ...)</div> |
| 400 |
</div> |
| 401 |
|
| 402 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 403 |
<ul> |
| 404 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Select rows, edit safe fields inline, or use the **right-side Resource editor** while staying in the catalog.' ) ); ?></li> |
| 405 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Paid versions add guided single or batch creation and reviewed bulk changes for the fields available in each edition.' ) ); ?></li> |
| 406 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Preview important changes in consistent **before-and-after cards** before applying them, with server-side permission, ownership, edition, and stale-review checks.' ) ); ?></li> |
| 407 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Reviewed deletion warns about existing bookings, links authorized users to the affected records, and protects parent and child Resource relationships.' ) ); ?></li> |
| 408 |
</ul> |
| 409 |
</div> |
| 410 |
</div> |
| 411 |
|
| 412 |
<div class="wpbc_wn_section"> |
| 413 |
<h2><?php echo 'Hierarchy and Capacity Tools (Business Large and Higher Editions)'; ?></h2> |
| 414 |
|
| 415 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 416 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 417 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__hierarchy_and_capacity_placeholder_02.png' ) ); ?>" alt="<?php echo 'Booking Resource hierarchy and capacity tools'; ?>" style="margin:10px 0;width:98%;" /> |
| 418 |
</div> |
| 419 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 420 |
<?php // Replace this placeholder with the final 11.6 screenshot or GIF before release. ?> |
| 421 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.6/wp_booking_calendar__hierarchy_and_capacity_placeholder_03.png' ) ); ?>" alt="<?php echo 'Booking Resource hierarchy and capacity tools'; ?>" style="margin:10px 0;width:98%;" /> |
| 422 |
</div> |
| 423 |
|
| 424 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 425 |
<ul> |
| 426 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Manage parent and child Booking Resources in expandable groups that stay together while searching, sorting, and changing pages.' ) ); ?></li> |
| 427 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Adjust capacity** by creating inherited child Resources or by reviewing which children become independent or are permanently deleted.' ) ); ?></li> |
| 428 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Capacity now represents the parent calendar and its child Resource calendars instead of the Maximum visitors setting.' ) ); ?></li> |
| 429 |
</ul> |
| 430 |
</div> |
| 431 |
</div> |
| 432 |
</div> |
| 433 |
<?php |
| 434 |
$obj->expand_section_end( $section_param_arr ); |
| 435 |
} |
| 436 |
|
| 437 |
/** |
| 438 |
* What's New section for Booking Calendar 11.5. |
| 439 |
* |
| 440 |
* @param object $obj Welcome-page renderer. |
| 441 |
* |
| 442 |
* @return void |
| 443 |
*/ |
| 444 |
function wpbc_welcome_section_11_5( $obj ) { |
| 445 |
$section_param_arr = array( 'version_num' => '11.5', 'show_expand' => !false ); |
| 446 |
// Keep empty image slots out of the markup until final 11.5 screenshots are available. |
| 447 |
$image_urls = array( |
| 448 |
'appointment_booking' => '', |
| 449 |
'appointment_admin' => '', |
| 450 |
'add_booking' => '', |
| 451 |
'form_appearance' => '', |
| 452 |
'compatibility' => '', |
| 453 |
); |
| 454 |
|
| 455 |
$obj->expand_section_start( $section_param_arr ); |
| 456 |
|
| 457 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 458 |
?> |
| 459 |
<div class="wpbc_wn_container"> |
| 460 |
|
| 461 |
<div class="wpbc_wn_section"> |
| 462 |
<h2><?php echo 'Services and the New Appointment Booking Flow'; ?></h2> |
| 463 |
|
| 464 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 465 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.5/wp_booking_calendar__services_and_appointments_2.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 466 |
</div> |
| 467 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 468 |
<ul> |
| 469 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW Services catalogue**: Create Services with a picture, description, duration, buffers, price, status, Booking Form, and compatible Providers.' ) ); ?></li> |
| 470 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Clear Provider overview**: Search and sort Services, review assigned Providers and weekly availability, and open the relevant availability settings directly.' ) ); ?></li> |
| 471 |
</ul> |
| 472 |
</div> |
| 473 |
|
| 474 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 475 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.5/booking_calendar__appointment_flow_01.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 476 |
<div style="text-align: center;font-style: italic;font-size: 0.9em;">This video demonstrates features available in the Business Small and higher editions, including multiple providers, payments, and booking costs.</div> |
| 477 |
</div> |
| 478 |
|
| 479 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 480 |
<ul> |
| 481 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW [booking_appointment] shortcode**: Customers choose a Service and compatible Provider before the native calendar and Booking Form load on the same page with AJAX.' ) ); ?></li> |
| 482 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• A new **Start Over** field in the Booking Form Builder lets customers restart the Appointment flow without reloading the page.' ) ); ?></li> |
| 483 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• A new **Appointments and Services Flow** template and **Weekday Start Time** field provide an Appointment-ready Form Builder starting point.' ) ); ?></li> |
| 484 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Reliable scheduling**: Service duration, buffers, and Provider-specific overrides are checked on the server before an Appointment is saved.' ) ); ?></li> |
| 485 |
</ul> |
| 486 |
</div> |
| 487 |
</div> |
| 488 |
|
| 489 |
<div class="wpbc_wn_section"> |
| 490 |
<h2><?php echo 'Administration Modes and QuickStart'; ?></h2> |
| 491 |
|
| 492 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 493 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.5/wp_booking_calendar__booking_modes_01.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 494 |
</div> |
| 495 |
|
| 496 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;"> |
| 497 |
|
| 498 |
<ul> |
| 499 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Choose **Classic**, **Appointments**, or **Rentals** to use familiar terminology and focused navigation without changing existing bookings, resources, availability, or page URLs.' ) ); ?></li> |
| 500 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Mode selection is stored for the active Booking Calendar owner, including supported MultiUser owner contexts.' ) ); ?></li> |
| 501 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Explicit **Appointment QuickStart** and **Rental QuickStart** actions can reuse or prepare the minimum booking page setup and remain safe to run again.' ) ); ?></li> |
| 502 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• The **mode-aware Setup Wizard** follows the selected booking profile through the relevant Service, Provider, form, availability, appearance, publish, and test-page steps.' ) ); ?></li> |
| 503 |
</ul> |
| 504 |
</div> |
| 505 |
</div> |
| 506 |
|
| 507 |
<div class="wpbc_wn_section"> |
| 508 |
<h2><?php echo 'Resource-first Booking Flow'; ?> ( Pro Versions)</h2> |
| 509 |
|
| 510 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 511 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.5/wp_booking_calendar__resources_selector_01.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 512 |
<div style="text-align: center;font-style: italic;font-size: 0.9em;">This video demonstrates features available in the Pro versions, including payments, and booking costs in BS+ versions.</div> |
| 513 |
</div> |
| 514 |
|
| 515 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;"> |
| 516 |
<ul> |
| 517 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• The new **[booking_resource_selector] shortcode** lets visitors choose a permitted Booking Resource before its native calendar and Booking Form load on the same page.' ) ); ?></li> |
| 518 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Restrict, preselect, or optionally auto-open Resources from the shortcode popup or WordPress block, while retaining Start Over and the established availability, pricing, payment, and booking engines.' ) ); ?></li> |
| 519 |
</ul> |
| 520 |
</div> |
| 521 |
</div> |
| 522 |
|
| 523 |
<div class="wpbc_wn_section" style="gap:1%"> |
| 524 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 525 |
<h3><?php echo 'Appointment Administration'; ?></h3> |
| 526 |
|
| 527 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding:5px;"> |
| 528 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.5/wp_booking_calendar__appointment_administration_3.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 529 |
</div> |
| 530 |
|
| 531 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 532 |
<?php if ( ! empty( $image_urls['appointment_admin'] ) ) { ?> |
| 533 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 534 |
<img src="<?php echo esc_url( $image_urls['appointment_admin'] ); ?>" alt="<?php echo 'Appointment administration'; ?>" style="margin:10px 0;width:98%;" /> |
| 535 |
<?php } ?> |
| 536 |
</div> |
| 537 |
|
| 538 |
<ul> |
| 539 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW Add Appointment page**: Create an Appointment through the same Service-first flow from a focused admin canvas with contextual inspector panels.' ) ); ?></li> |
| 540 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Filter the Booking Listing by **Services and Providers** using reusable searchable multi-select controls.' ) ); ?></li> |
| 541 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Appointment details, Service and Provider snapshots, duration, buffers, and blocked time are available in administration details and supported outputs.' ) ); ?></li> |
| 542 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Providers remain existing **Booking Resources**, preserving established availability, permissions, and ownership behavior.' ) ); ?></li> |
| 543 |
</ul> |
| 544 |
</div> |
| 545 |
|
| 546 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 547 |
<h3><?php echo 'Redesigned Add Booking Page'; ?></h3> |
| 548 |
|
| 549 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding:5px;"> |
| 550 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.5/wp_booking_calendar__add_booking_page_3.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 551 |
</div> |
| 552 |
|
| 553 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 554 |
<?php if ( ! empty( $image_urls['add_booking'] ) ) { ?> |
| 555 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 556 |
<img src="<?php echo esc_url( $image_urls['add_booking'] ); ?>" alt="<?php echo 'Redesigned Add Booking administration page'; ?>" style="margin:10px 0;width:98%;" /> |
| 557 |
<?php } ?> |
| 558 |
</div> |
| 559 |
|
| 560 |
<ul> |
| 561 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Focused booking canvas**: The standard Booking Form remains in the main workspace while setup and actions move into a consistent right-side inspector.' ) ); ?></li> |
| 562 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Important actions stay visible**: Add Booking and Auto-fill Form are placed together with a concise summary of the selected Booking Resource, Booking Form, email notifications, and past-date behavior.' ) ); ?></li> |
| 563 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Temporary Date selection override**: Administrators can switch between Single day, Multiple days, and Range days immediately without reloading the page or changing saved front-end settings.' ) ); ?></li> |
| 564 |
</ul> |
| 565 |
|
| 566 |
</div> |
| 567 |
</div> |
| 568 |
|
| 569 |
<div class="wpbc_wn_section"> |
| 570 |
|
| 571 |
<h2><?php echo 'Consistent Form Styles and Accent Colors'; ?></h2> |
| 572 |
|
| 573 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 574 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.5/wp_booking_calendar__theme_and_accent_colors_01.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 575 |
</div> |
| 576 |
|
| 577 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 578 |
<?php if ( ! empty( $image_urls['form_appearance'] ) ) { ?> |
| 579 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 580 |
<img src="<?php echo esc_url( $image_urls['form_appearance'] ); ?>" alt="<?php echo 'Form Styles and accent colors'; ?>" style="margin:10px 0;width:98%;" /> |
| 581 |
<?php } ?> |
| 582 |
</div> |
| 583 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 584 |
<ul> |
| 585 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Choose an optional **Custom accent color** for primary buttons, secondary-button hover borders, focused fields, selected choices, navigation, and compatible time slots.' ) ); ?></li> |
| 586 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Use **Apply accent to form elements** to copy the accent into supported editable components, with global time-picker display and style controls available in Time field inspectors.' ) ); ?></li> |
| 587 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• The new **Automatic - Match Booking Form** time-slot style follows the selected Form Style while existing time-picker skins keep their own colors.' ) ); ?></li> |
| 588 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Custom button controls and unified primary, secondary, submit, and wizard styles provide consistent dimensions, borders, hover behavior, dark-theme colors, and accessible keyboard focus.' ) ); ?></li> |
| 589 |
</ul> |
| 590 |
</div> |
| 591 |
|
| 592 |
</div> |
| 593 |
|
| 594 |
<div class="wpbc_wn_section"> |
| 595 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;"> |
| 596 |
<h3><?php echo 'Compatibility and Extensibility'; ?></h3> |
| 597 |
|
| 598 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 599 |
<?php if ( ! empty( $image_urls['compatibility'] ) ) { ?> |
| 600 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 601 |
<img src="<?php echo esc_url( $image_urls['compatibility'] ); ?>" alt="<?php echo 'Booking Calendar compatibility and extensibility'; ?>" style="margin:10px 0;width:98%;" /> |
| 602 |
<?php } ?> |
| 603 |
</div> |
| 604 |
|
| 605 |
<ul> |
| 606 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Existing **Booking Resources, availability, Booking Forms, pricing, payments, and bookings remain authoritative**; the Appointment experience builds on them instead of replacing them.' ) ); ?></li> |
| 607 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• Appointment information is included in supported confirmations, emails, Booking Listing details, print views, and CSV exports.' ) ); ?></li> |
| 608 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Safer customer access**: Public Timeline links are scoped to the exact authorized booking and Resource; Personal and higher editions use one-time email verification for customer booking lists.' ) ); ?></li> |
| 609 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• New filters and hooks allow commercial editions and extensions to adapt capabilities, Service and Provider catalogues, and Appointment form routing.' ) ); ?></li> |
| 610 |
</ul> |
| 611 |
</div> |
| 612 |
</div> |
| 613 |
</div> |
| 614 |
<?php |
| 615 |
$obj->expand_section_end( $section_param_arr ); |
| 616 |
} |
| 617 |
|
| 618 |
/** |
| 619 |
* What's New section for Booking Calendar 11.4 |
| 620 |
* |
| 621 |
* @param object $obj |
| 622 |
* |
| 623 |
* @return void |
| 624 |
*/ |
| 625 |
function wpbc_welcome_section_11_4( $obj ) { |
| 626 |
|
| 627 |
$section_param_arr = array( 'version_num' => '11.4', 'show_expand' => true ); |
| 628 |
|
| 629 |
$obj->expand_section_start( $section_param_arr ); |
| 630 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 631 |
?> |
| 632 |
<div class="wpbc_wn_container"> |
| 633 |
|
| 634 |
<div class="wpbc_wn_section"> |
| 635 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'New Global Booking Form Styles' ) ); ?></h2> |
| 636 |
|
| 637 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 638 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 639 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.4/booking_calendar__booking_form_styles.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 640 |
</div> |
| 641 |
|
| 642 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 643 |
<ul> |
| 644 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added global **Booking Form Styles** with Light and Dark bordered, borderless, and soft-background presets, plus a fully configurable Custom style.' ) ); ?></li> |
| 645 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Complete appearance controls**: Customize form backgrounds, borders, spacing, text, fields, focus states, checkbox and radio controls, and buttons.' ) ); ?></li> |
| 646 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Consistent live previews**: Select and preview the same global Form Style in **Settings > Appearance / Theme** and the **Booking Form Builder**.' ) ); ?></li> |
| 647 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Unified front-end design**: Form styles now apply consistently across booking forms and supported payment buttons while preserving PayPal branding.' ) ); ?></li> |
| 648 |
</ul> |
| 649 |
</div> |
| 650 |
</div> |
| 651 |
|
| 652 |
<div class="wpbc_wn_section"> |
| 653 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Two-Click Date Range Selection' ) ); ?></h2> |
| 654 |
|
| 655 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 656 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 657 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.4/booking_calendar__date_range_selection.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 658 |
</div> |
| 659 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 660 |
<ul> |
| 661 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added two-click date-range selection in **Booking Calendar Free and higher editions**, allowing visitors to select the first and last booking dates.' ) ); ?></li> |
| 662 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Clear visual selection**: Available dates and the prospective date range are highlighted while visitors move through the calendar.' ) ); ?></li> |
| 663 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Better visitor guidance**: Added clearer instructions for completing a range and more useful feedback when it contains unavailable dates.' ) ); ?></li> |
| 664 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Faster full-day setup**: Two-click range selection is now the default when Full Day Booking mode is activated in the Setup Wizard.' ) ); ?></li> |
| 665 |
</ul> |
| 666 |
</div> |
| 667 |
</div> |
| 668 |
|
| 669 |
<div class="wpbc_wn_section" style="gap:1%"> |
| 670 |
|
| 671 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 672 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Centralized Form Messages' ) ); ?></h2> |
| 673 |
|
| 674 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 675 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 676 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.4/booking_calendar__form_messages.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 677 |
</div> |
| 678 |
<ul> |
| 679 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added a dedicated **Form Messages** settings page for date selection notices, validation errors, submission messages, and other visitor-facing text.' ) ); ?></li> |
| 680 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Multilingual messages**: Customize messages with **[lang=LOCALE]** language shortcodes while keeping translated plugin defaults.' ) ); ?></li> |
| 681 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Simpler settings workflow**: Edit all message groups on one page, use quick section navigation, restore defaults, and save with AJAX notifications.' ) ); ?></li> |
| 682 |
</ul> |
| 683 |
</div> |
| 684 |
|
| 685 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 686 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Streamlined Form Builder Workflow' ) ); ?></h2> |
| 687 |
|
| 688 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 689 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 690 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.4/booking_calendar__form_builder_workflow.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 691 |
</div> |
| 692 |
<ul> |
| 693 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Modernized form configuration**: Removed legacy Booking Form settings pages and routed form configuration to the **Booking Form Builder**.' ) ); ?></li> |
| 694 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Safe legacy migration**: Existing Simple and Advanced legacy forms are imported into the Booking Form Builder during updates.' ) ); ?></li> |
| 695 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Setup Wizard improvement**: Added **Save and Continue** and limited visual highlighting to the settings relevant to the current setup step.' ) ); ?></li> |
| 696 |
</ul> |
| 697 |
</div> |
| 698 |
</div> |
| 699 |
|
| 700 |
</div> |
| 701 |
<?php |
| 702 |
|
| 703 |
$obj->expand_section_end( $section_param_arr ); |
| 704 |
} |
| 705 |
|
| 706 |
/** |
| 707 |
* What's New section for Booking Calendar 11.3 |
| 708 |
* |
| 709 |
* @param object $obj |
| 710 |
* |
| 711 |
* @return void |
| 712 |
*/ |
| 713 |
function wpbc_welcome_section_11_3( $obj ) { |
| 714 |
|
| 715 |
$section_param_arr = array( 'version_num' => '11.3', 'show_expand' => true ); |
| 716 |
|
| 717 |
$obj->expand_section_start( $section_param_arr ); |
| 718 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 719 |
?> |
| 720 |
<div class="wpbc_wn_container"> |
| 721 |
|
| 722 |
<div class="wpbc_wn_section"> |
| 723 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'New Calendar Settings Page' ) ); ?></h2> |
| 724 |
|
| 725 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 726 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 727 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.3/booking_calendar__settings_calendar_live_preview.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 728 |
</div> |
| 729 |
|
| 730 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 731 |
<ul> |
| 732 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added a dedicated **Settings > Calendar** page with a live calendar preview and right-side configuration panels.' ) ); ?></li> |
| 733 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Days selection preview**: Configure single day, multiple days, range selection, start weekdays, and related selection rules while immediately seeing how the calendar behaves.' ) ); ?></li> |
| 734 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Changeover settings**: Configure check-in/check-out changeover days, diagonal or vertical markings, recurrent times, and changeover exceptions from the same visual interface.' ) ); ?></li> |
| 735 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Calendar legend and tooltips**: Show or hide the legend, edit legend item titles, and configure date tooltip content with instant preview updates.' ) ); ?></li> |
| 736 |
</ul> |
| 737 |
</div> |
| 738 |
</div> |
| 739 |
|
| 740 |
<div class="wpbc_wn_section"> |
| 741 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'New Appearance / Theme Settings Page' ) ); ?></h2> |
| 742 |
|
| 743 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 744 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 745 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.3/booking_calendar__settings_theme_live_preview.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 746 |
</div> |
| 747 |
|
| 748 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 749 |
<ul> |
| 750 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added a dedicated **Settings > Appearance / Theme** page for configuring the calendar skin and booking form visual style.' ) ); ?></li> |
| 751 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Real booking form preview**: Preview the real calendar and booking form using selected resources, month count, custom forms, and preview modes.' ) ); ?></li> |
| 752 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Theme controls**: Switch between light and dark booking form themes, choose calendar skins, configure time picker appearance, and review the result before saving.' ) ); ?></li> |
| 753 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Cleaner settings experience**: Legacy Appearance / Color Theme settings were replaced with a clearer visual workflow.' ) ); ?></li> |
| 754 |
</ul> |
| 755 |
</div> |
| 756 |
</div> |
| 757 |
|
| 758 |
<div class="wpbc_wn_section" style="gap:1%"> |
| 759 |
|
| 760 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 761 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Setup Wizard Improvements' ) ); ?></h2> |
| 762 |
|
| 763 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 764 |
<!-- <img src="--><?php //echo esc_attr( $obj->section_img_url( '11.3/booking_calendar__setup_wizard_calendar_flow.png' ) ); ?><!--" style="margin:10px 0;width:98%;" />--> |
| 765 |
|
| 766 |
<ul> |
| 767 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improvement**: Setup Wizard steps now open the new Calendar and Appearance / Theme settings pages instead of older settings screens.' ) ); ?></li> |
| 768 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Smarter changeover setup**: Changeover workflows now include a dedicated Changeover Days step and continue through Date Availability, Color Theme, Publish, and Booking Listing.' ) ); ?></li> |
| 769 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Better Setup Bar positioning**: The floating Setup Bar moves to a better default top position on visual settings pages, while preserving any user-dragged position.' ) ); ?></li> |
| 770 |
</ul> |
| 771 |
</div> |
| 772 |
|
| 773 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 774 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Resources and Admin Workflow' ) ); ?></h2> |
| 775 |
|
| 776 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 777 |
<!-- <img src="--><?php //echo esc_attr( $obj->section_img_url( '11.3/booking_calendar__resources_capacity_rules.png' ) ); ?><!--" style="margin:10px 0;width:98%;" />--> |
| 778 |
|
| 779 |
<ul> |
| 780 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Moved capacity-related settings to **Resources > Capacity Rules**, keeping booking quantity and pending-day rules closer to resource configuration.' ) ); ?></li> |
| 781 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improvement**: Added a shared top path/status line across Booking Calendar admin pages for clearer navigation.' ) ); ?></li> |
| 782 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improvement**: Admin left sidebar and full-screen mode preferences are now saved per user, while special setup and builder workflows can still enforce their required layout.' ) ); ?></li> |
| 783 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fixes**: Improved Calendar preview saving, changeover rendering, legend refresh, tooltip settings, Setup Wizard routing, and Booking Listing email toggle persistence.' ) ); ?></li> |
| 784 |
</ul> |
| 785 |
</div> |
| 786 |
</div> |
| 787 |
|
| 788 |
</div> |
| 789 |
|
| 790 |
<?php |
| 791 |
|
| 792 |
$obj->expand_section_end( $section_param_arr ); |
| 793 |
} |
| 794 |
|
| 795 |
/** |
| 796 |
* What's New section for Booking Calendar 11.2 |
| 797 |
* |
| 798 |
* @param object $obj |
| 799 |
* |
| 800 |
* @return void |
| 801 |
*/ |
| 802 |
function wpbc_welcome_section_11_2( $obj ) { |
| 803 |
|
| 804 |
|
| 805 |
$section_param_arr = array( 'version_num' => '11.2', 'show_expand' => true ); |
| 806 |
|
| 807 |
$obj->expand_section_start( $section_param_arr ); |
| 808 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 809 |
?> |
| 810 |
<div class="wpbc_wn_container"> |
| 811 |
|
| 812 |
<div class="wpbc_wn_section"> |
| 813 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Redesigned Setup Wizard' ) ); ?></h2> |
| 814 |
|
| 815 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 816 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 817 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.2/booking_calendar__setup_wizard__floating_setup_bar.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 818 |
</div> |
| 819 |
|
| 820 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 821 |
<ul> |
| 822 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Redesigned the initial **Setup Wizard** with a floating **Setup Bar** that guides users through configuration directly on the relevant Booking Calendar admin pages.' ) ); ?></li> |
| 823 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Step-by-step setup flow**: After choosing the booking type, the wizard opens the exact settings pages needed for form setup, date selection, availability, working time, color theme, and publishing.' ) ); ?></li> |
| 824 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Context-aware guidance**: The Setup Bar shows the current step, progress, Back / Continue / Finish controls, and clear instructions for what should be configured on each page.' ) ); ?></li> |
| 825 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Smarter page assistance**: Setup steps can automatically open, scroll to, and highlight the related settings section.' ) ); ?></li> |
| 826 |
</ul> |
| 827 |
</div> |
| 828 |
</div> |
| 829 |
|
| 830 |
|
| 831 |
<div class="wpbc_wn_section"> |
| 832 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Floating Setup Bar' ) ); ?></h2> |
| 833 |
|
| 834 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 835 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 836 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.2/booking_calendar__setup_wizard__move_setup_bar.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 837 |
</div> |
| 838 |
|
| 839 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 840 |
<ul> |
| 841 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added a floating **Setup Bar** available across Booking Calendar admin pages during setup.' ) ); ?></li> |
| 842 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Save-aware workflow**: Steps that require saving now keep the Continue button disabled until changes are saved.' ) ); ?></li> |
| 843 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Flexible positioning**: The bar can be collapsed, moved by drag and drop, reset to its default position, and automatically shifted away from right-side settings panels.' ) ); ?></li> |
| 844 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Reliable completion**: Finishing or skipping setup now correctly hides the Setup Bar across all Booking Calendar admin pages.' ) ); ?></li> |
| 845 |
</ul> |
| 846 |
</div> |
| 847 |
</div> |
| 848 |
|
| 849 |
|
| 850 |
<div class="wpbc_wn_section"> |
| 851 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Front-End Booking Form Popup' ) ); ?></h2> |
| 852 |
|
| 853 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 854 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 855 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.2/booking_calendar__open_popup.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 856 |
</div> |
| 857 |
|
| 858 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 859 |
<ul> |
| 860 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added front-end popup support for booking forms using shortcode parameters.' ) ); ?></li> |
| 861 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Popup booking form shortcode**: Use **[booking resource_id=1 popup=1]** to show a button that opens the booking form in a modal window.' ) ); ?></li> |
| 862 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Dedicated alias shortcode**: Added **[booking_popup]** as a shortcut for popup booking forms.' ) ); ?></li> |
| 863 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Customizable popup display**: Configure popup button text, popup title, custom CSS classes, modal class, and popup size.' ) ); ?></li> |
| 864 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Automatic assets loading**: Required popup JavaScript and CSS are loaded automatically on front-end pages.' ) ); ?></li> |
| 865 |
</ul> |
| 866 |
</div> |
| 867 |
</div> |
| 868 |
|
| 869 |
<div class="wpbc_wn_section" style="gap:1%"> |
| 870 |
|
| 871 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 872 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Time Slots Availability Improvements' ) ); ?></h2> |
| 873 |
|
| 874 |
<ul> |
| 875 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improvement**: Improved the **Create Booking for Selection** workflow in the Time Slots Availability popup.' ) ); ?></li> |
| 876 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **More reliable popup handoff**: The Add Booking popup is now validated before the Time Slots popup closes, preventing cases where no booking form appeared.' ) ); ?></li> |
| 877 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Better multi-date selections**: Dragged multi-date time intervals are now handled as explicit admin-selected time overrides during availability validation.' ) ); ?></li> |
| 878 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Cleaner JavaScript**: Fixed deprecated jQuery warnings in the Time Slots Availability popup.' ) ); ?></li> |
| 879 |
</ul> |
| 880 |
</div> |
| 881 |
|
| 882 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;"> |
| 883 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Reliability and Sync Improvements' ) ); ?></h2> |
| 884 |
|
| 885 |
<ul> |
| 886 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fix**: Fixed a PHP 8+ fatal error on the Form Builder page when malformed legacy custom form data was stored incorrectly.' ) ); ?></li> |
| 887 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fix**: Improved Form Options Costs parsing for selectbox fields with quoted defaults. Available in Business Medium or higher.' ) ); ?></li> |
| 888 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fix**: Add Booking now correctly loads the default custom booking form assigned to the selected booking resource. Available in Business Medium or higher.' ) ); ?></li> |
| 889 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fix**: Fixed Early / Late Booking discount calculation so fixed form option costs are not incorrectly reduced to zero.' ) ); ?></li> |
| 890 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added the **Append extra day after imported checkout day** option for **.ics** import sync rules.' ) ); ?></li> |
| 891 |
</ul> |
| 892 |
</div> |
| 893 |
</div> |
| 894 |
|
| 895 |
</div> |
| 896 |
|
| 897 |
<?php |
| 898 |
|
| 899 |
$obj->expand_section_end( $section_param_arr ); |
| 900 |
} |
| 901 |
|
| 902 |
/** |
| 903 |
* What's New section for Booking Calendar 11.1 |
| 904 |
* |
| 905 |
* @param object $obj |
| 906 |
* |
| 907 |
* @return void |
| 908 |
*/ |
| 909 |
function wpbc_welcome_section_11_1( $obj ) { |
| 910 |
|
| 911 |
|
| 912 |
$section_param_arr = array( 'version_num' => '11.1', 'show_expand' => true ); |
| 913 |
|
| 914 |
$obj->expand_section_start( $section_param_arr ); |
| 915 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 916 |
?> |
| 917 |
|
| 918 |
<div class="wpbc_wn_container"> |
| 919 |
|
| 920 |
<div class="wpbc_wn_section"> |
| 921 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Working Time' ) ); ?></h2> |
| 922 |
|
| 923 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 924 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 925 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.1/wp_booking_calendar_11_1_working_time_01.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 926 |
</div> |
| 927 |
|
| 928 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 929 |
<ul> |
| 930 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added **Working Time** settings to **Booking Calendar > Availability > General Availability**, allowing administrators to restrict time-based bookings to specific working hours.' ) ); ?></li> |
| 931 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Designed for time-based booking forms**: Working Time applies to booking forms that use **rangetime**, **start/end time**, or **start/duration time** fields.' ) ); ?></li> |
| 932 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Flexible schedule control**: Define default working hours for each weekday, then optionally set custom working time rules for specific booking resources.' ) ); ?></li> |
| 933 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Clear availability timeline**: Time outside working hours is shown in **Time Slots Availability** as read-only unavailable time, with links back to the related Working Time settings.' ) ); ?></li> |
| 934 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Cleaner front-end calendar display**: Dates limited only by Working Time keep their tooltip information, while the calendar avoids showing partial-booking dots when there are no real bookings or manually blocked time slots.' ) ); ?></li> |
| 935 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Better editing workflow**: When opening Working Time settings from the Time Slots Availability timeline, the General Availability page automatically expands and scrolls to the Working Time section.' ) ); ?></li> |
| 936 |
</ul> |
| 937 |
</div> |
| 938 |
</div> |
| 939 |
|
| 940 |
</div> |
| 941 |
<?php |
| 942 |
|
| 943 |
$obj->expand_section_end( $section_param_arr ); |
| 944 |
} |
| 945 |
|
| 946 |
/** |
| 947 |
* What's New section for Booking Calendar 11.0 |
| 948 |
* |
| 949 |
* @param object $obj |
| 950 |
* |
| 951 |
* @return void |
| 952 |
*/ |
| 953 |
function wpbc_welcome_section_11_0( $obj ) { |
| 954 |
|
| 955 |
|
| 956 |
$section_param_arr = array( 'version_num' => '11.0', 'show_expand' => true ); |
| 957 |
|
| 958 |
$obj->expand_section_start( $section_param_arr ); |
| 959 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 960 |
?> |
| 961 |
<div class="wpbc_wn_container"> |
| 962 |
|
| 963 |
<div class="wpbc_wn_section"> |
| 964 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Time Slots Availability' ) ); ?></h2> |
| 965 |
|
| 966 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 967 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 968 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.0/wp_booking_calendar__availability__time_slots_01.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 969 |
<!-- <img src="--><?php //echo esc_attr( $obj->section_img_url( '11.0/wp_booking_calendar__availability__time_slots_02.png' ) ); ?><!--" style="margin:10px 0;width:98%;" />--> |
| 970 |
</div> |
| 971 |
|
| 972 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 973 |
<ul> |
| 974 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added the **Time Slots Availability** page under **Booking Calendar > Availability**, allowing administrators to define unavailable time intervals for specific booking resources and date ranges.' ) ); ?></li> |
| 975 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Interactive timeline selection**: Select one or many days directly in the timeline, adjust start and end time, then block or unblock the selected interval.' ) ); ?></li> |
| 976 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Clear availability states**: The timeline now shows available, booked, unavailable, and full-day unavailable states in one place.' ) ); ?></li> |
| 977 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Finer control**: Work with visible time range controls, date range navigation arrows, and slot steps down to **5 minutes**.' ) ); ?></li> |
| 978 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Better long-range editing**: Sticky timeline headers and progress indicators make loading, blocking, unblocking, and saving easier to follow.' ) ); ?></li> |
| 979 |
</ul> |
| 980 |
</div> |
| 981 |
</div> |
| 982 |
|
| 983 |
|
| 984 |
<div class="wpbc_wn_section"> |
| 985 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Set Times Availability Popup' ) ); ?></h2> |
| 986 |
|
| 987 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 988 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 989 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.0/wp_booking_calendar_11_0_set_times_availability_popup.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 990 |
|
| 991 |
</div> |
| 992 |
|
| 993 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 994 |
<ul> |
| 995 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added a reusable **Set Times Availability** popup to the Booking Listing page, so unavailable time intervals can be managed without leaving the bookings workflow.' ) ); ?></li> |
| 996 |
<li><img src="<?php echo esc_attr( $obj->section_img_url( '11.0/wp_booking_calendar__add_booking _from__timeslots__availability_01.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 997 |
<?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Create bookings from selected intervals**: Start a new booking directly from the selected time interval inside the Time Slots Availability popup.' ) ); ?></li> |
| 998 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Works across multiple days**: Select, block, unblock, and review unavailable intervals across a date range with booked and unavailable states visible.' ) ); ?></li> |
| 999 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Unavailable full-day reasons**: The popup can show days blocked by Days Availability, Season Availability, unavailable weekdays, unavailable time from current time, and limit available days from today settings.' ) ); ?></li> |
| 1000 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Quick rule links**: Full-day unavailable timeline bars can link to the related availability settings page, helping administrators identify and adjust the rule that made a date unavailable.' ) ); ?></li> |
| 1001 |
</ul> |
| 1002 |
</div> |
| 1003 |
</div> |
| 1004 |
|
| 1005 |
|
| 1006 |
<div class="wpbc_wn_section"> |
| 1007 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Faster Add Booking Popup' ) ); ?></h2> |
| 1008 |
|
| 1009 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1010 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1011 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.0/wp_booking_calendar_11_0_add_booking_popup.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1012 |
</div> |
| 1013 |
|
| 1014 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1015 |
<ul> |
| 1016 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added a faster **Add Booking** popup to the Booking Listing and Timeline pages, so users can create bookings without leaving the current view.' ) ); ?></li> |
| 1017 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Prefilled from the timeline**: Selected booking resource, date, start time, and end time are passed into the popup when creating a booking from a selected interval.' ) ); ?></li> |
| 1018 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Choose the right form in place**: Select the booking resource and custom booking form directly inside the popup.' ) ); ?></li> |
| 1019 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Edit in the same workflow**: Existing bookings can be opened in the popup, with a direct link to edit the selected booking form when needed.' ) ); ?></li> |
| 1020 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improved navigation**: The Add Booking page is now available under the Bookings section, and Booking Listing and Timeline include a clearer **New booking** quick-action button.' ) ); ?></li> |
| 1021 |
</ul> |
| 1022 |
</div> |
| 1023 |
</div> |
| 1024 |
|
| 1025 |
|
| 1026 |
<div class="wpbc_wn_section"> |
| 1027 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'General Availability Settings' ) ); ?></h2> |
| 1028 |
|
| 1029 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1030 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1031 |
<img src="<?php echo esc_attr( $obj->section_img_url( '11.0/wp_booking_calendar_11_0_general_availability_settings_01.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1032 |
</div> |
| 1033 |
|
| 1034 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1035 |
<ul> |
| 1036 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added a **General Availability** settings page for defining global front-end availability rules across all calendars and booking resources.' ) ); ?></li> |
| 1037 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Live calendar preview**: Review unavailable weekdays, availability limits from the current date, unavailable time from current time, and booking buffer effects before saving.' ) ); ?></li> |
| 1038 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fast settings workflow**: Save changes with AJAX, reset preview controls to defaults, and continue working in the same page layout.' ) ); ?></li> |
| 1039 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Consistent admin design**: Uses the shared right-side palette layout from the Availability pages and setup wizard interfaces.' ) ); ?></li> |
| 1040 |
</ul> |
| 1041 |
</div> |
| 1042 |
</div> |
| 1043 |
|
| 1044 |
|
| 1045 |
<div class="wpbc_wn_section"> |
| 1046 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Availability Accuracy and Reliability Fixes' ) ); ?></h2> |
| 1047 |
|
| 1048 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1049 |
<ul> |
| 1050 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fix**: Fixed calendar booking status detection, improving how the front-end calendar reads approved and pending booking statuses for capacity-based resources, including parent/child resources and change-over dates.' ) ); ?></li> |
| 1051 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fix**: Fixed availability calculation for Booking Form Builder forms with time-slot fields, so dates are marked as fully unavailable when all booking form time slots are already booked. (10.15.8.2)' ) ); ?></li> |
| 1052 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Fix**: Fixed a fatal error on some hosts by reading the local PRO **meta.json** file directly instead of using WordPress FTP filesystem access.' ) ); ?></li> |
| 1053 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improvement**: Front-end booking form calendars should now reflect real availability more clearly across booked, pending, blocked, and change-over dates.' ) ); ?></li> |
| 1054 |
</ul> |
| 1055 |
</div> |
| 1056 |
</div> |
| 1057 |
|
| 1058 |
</div> |
| 1059 |
<?php |
| 1060 |
|
| 1061 |
$obj->expand_section_end( $section_param_arr ); |
| 1062 |
} |
| 1063 |
|
| 1064 |
function wpbc_welcome_section_10_15( $obj ) { |
| 1065 |
|
| 1066 |
|
| 1067 |
$section_param_arr = array( 'version_num' => '10.15', 'show_expand' => true ); |
| 1068 |
|
| 1069 |
$obj->expand_section_start( $section_param_arr ); |
| 1070 |
|
| 1071 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 1072 |
?> |
| 1073 |
<div class="wpbc_wn_container"> |
| 1074 |
|
| 1075 |
<div class="wpbc_wn_section"> |
| 1076 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'New Drag & Drop Booking Form Builder' ) ); ?></h2> |
| 1077 |
|
| 1078 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1079 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1080 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wp_booking_calendar__form_builder_overview_02.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1081 |
</div> |
| 1082 |
|
| 1083 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1084 |
<ul> |
| 1085 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Introduced the new **Drag & Drop Booking Form Builder** for visually creating booking forms without manually editing form code.' ) ); ?></li> |
| 1086 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Build forms visually**: Drag fields into the canvas, arrange the layout, and see the result instantly in the live preview.' ) ); ?></li> |
| 1087 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Faster and easier workflow**: Create modern booking forms without working with complex manual shortcodes.' ) ); ?></li> |
| 1088 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Available in all versions**: Booking Calendar now supports **multiple custom booking form configurations** in all versions, including the Free version.' ) ); ?></li> |
| 1089 |
</ul> |
| 1090 |
</div> |
| 1091 |
</div> |
| 1092 |
|
| 1093 |
|
| 1094 |
<div class="wpbc_wn_section"> |
| 1095 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Create Booking Forms, Contact Forms, and Inquiry Forms' ) ); ?></h2> |
| 1096 |
|
| 1097 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;margin: 0 1% 0 0;"> |
| 1098 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1099 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wp_booking_calendar_10_15_contact_inquiry_forms_05.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1100 |
</div> |
| 1101 |
|
| 1102 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;margin: 0 0 0 1%;"> |
| 1103 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1104 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wp_booking_calendar_10_15_contact_form_preview_01.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1105 |
</div> |
| 1106 |
|
| 1107 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1108 |
<ul> |
| 1109 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **NEW**: Added support for **Contact Forms / Inquiry Forms / Request Forms** — the calendar is now optional.' ) ); ?></li> |
| 1110 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Use Booking Calendar as a contact form alternative**: Create forms without booking dates and manage all submissions inside Booking Calendar.' ) ); ?></li> |
| 1111 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Ready-to-use templates**: Start faster with predefined templates for booking, contact, and inquiry forms.' ) ); ?></li> |
| 1112 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Flexible start**: Create a form from a template or begin with a blank canvas for full control.' ) ); ?></li> |
| 1113 |
</ul> |
| 1114 |
</div> |
| 1115 |
</div> |
| 1116 |
|
| 1117 |
|
| 1118 |
<div class="wpbc_wn_section"> |
| 1119 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Powerful Visual Layout Builder' ) ); ?></h2> |
| 1120 |
|
| 1121 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1122 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1123 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wp_booking_calendar__form_builder_02.gif' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1124 |
</div> |
| 1125 |
|
| 1126 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1127 |
<ul> |
| 1128 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Drag & drop fields** from the Fields palette directly into the form canvas.' ) ); ?></li> |
| 1129 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Live visual preview** while building and editing the form.' ) ); ?></li> |
| 1130 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Rows and columns layout** for clean and structured form designs.' ) ); ?></li> |
| 1131 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Nested sections** (up to 5 levels) for advanced multi-row and multi-column layouts.' ) ); ?></li> |
| 1132 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Ready section layouts** with 1, 2, 3, or 4 columns.' ) ); ?></li> |
| 1133 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Column resizing with visual resizers** for precise control of layout widths.' ) ); ?></li> |
| 1134 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Multi-page forms** for creating step-by-step wizard-style booking forms.' ) ); ?></li> |
| 1135 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Drag & drop sorting of sections** plus **Move Up / Move Down controls** for faster layout management.' ) ); ?></li> |
| 1136 |
</ul> |
| 1137 |
</div> |
| 1138 |
</div> |
| 1139 |
|
| 1140 |
|
| 1141 |
<div class="wpbc_wn_section"> |
| 1142 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Smart Editing and Form Controls' ) ); ?></h2> |
| 1143 |
|
| 1144 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;margin: 0 1% 0 0;"> |
| 1145 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1146 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wp_booking_calendar_10_15_sidebar_inspector_02.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1147 |
</div> |
| 1148 |
|
| 1149 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;margin: 0 0 0 1%;"> |
| 1150 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1151 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wp_booking_calendar_10_15_field_limits_02.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1152 |
</div> |
| 1153 |
|
| 1154 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1155 |
<ul> |
| 1156 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Right sidebar inspector**: Easily edit field and section settings in a clear visual interface.' ) ); ?></li> |
| 1157 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Field usage limits**: The Builder automatically prevents adding one-time fields, such as the Calendar field, more than once.' ) ); ?></li> |
| 1158 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Responsive-friendly column width control** with layout protection for more stable form structure.' ) ); ?></li> |
| 1159 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improved visual editing controls** for easier field, section, and layout management directly inside the canvas.' ) ); ?></li> |
| 1160 |
</ul> |
| 1161 |
</div> |
| 1162 |
</div> |
| 1163 |
|
| 1164 |
|
| 1165 |
<div class="wpbc_wn_section"> |
| 1166 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Better Form Management and Reuse' ) ); ?></h2> |
| 1167 |
|
| 1168 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1169 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1170 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wpbc_11_0_form_management_01.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1171 |
</div> |
| 1172 |
|
| 1173 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1174 |
<ul> |
| 1175 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Predefined templates:** Start building your new booking form with ready-made templates.' ) ); ?></li> |
| 1176 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Save and restore complete form layouts** including pages, sections, columns, and fields.' ) ); ?></li> |
| 1177 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Duplicate existing form configurations** to create similar forms much faster.' ) ); ?></li> |
| 1178 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Save As workflow**: Create a new form based on an existing layout and settings.' ) ); ?></li> |
| 1179 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Flexible form configuration management** for creating, saving, loading, organizing, and previewing custom forms.' ) ); ?></li> |
| 1180 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Form details management**: Set a custom form title, slug, description, and image.' ) ); ?></li> |
| 1181 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Media library integration** for selecting a custom image for each form configuration.' ) ); ?></li> |
| 1182 |
</ul> |
| 1183 |
</div> |
| 1184 |
</div> |
| 1185 |
|
| 1186 |
|
| 1187 |
<div class="wpbc_wn_section"> |
| 1188 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Preview, Import, and Flexible Workflow' ) ); ?></h2> |
| 1189 |
|
| 1190 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;margin: 0 1% 0 0;"> |
| 1191 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1192 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wpbc_11_0_preview_page_01.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1193 |
</div> |
| 1194 |
|
| 1195 |
<div class="wpbc_wn_col" style="flex: 1 1 48%;margin: 0 0 0 1%;"> |
| 1196 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1197 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.15/wp_booking_calendar_10_15_advanced_mode.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1198 |
</div> |
| 1199 |
|
| 1200 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1201 |
<ul> |
| 1202 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Preview page / live front-end preview**: Test how the form looks and works before publishing it on your website.' ) ); ?></li> |
| 1203 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Import existing legacy booking forms** into the new Builder for easier transition to the visual workflow.' ) ); ?></li> |
| 1204 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Builder mode and Advanced Form mode**: Work visually or keep manual form configuration when needed.' ) ); ?></li> |
| 1205 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Blank form creation in Builder mode** lets you start new forms immediately in the visual editor.' ) ); ?></li> |
| 1206 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Section presets** help you insert commonly used layout structures faster.' ) ); ?></li> |
| 1207 |
</ul> |
| 1208 |
</div> |
| 1209 |
</div> |
| 1210 |
|
| 1211 |
|
| 1212 |
<div class="wpbc_wn_section"> |
| 1213 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Important Note About the Beta Builder' ) ); ?></h2> |
| 1214 |
|
| 1215 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1216 |
<ul> |
| 1217 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **This feature is currently in Beta** and can still be disabled at any time.' ) ); ?></li> |
| 1218 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• To return to the previous legacy booking form configuration, go to **Form Builder > Settings** in the right sidebar and disable the **"Drag & Drop Form Builder"** option.' ) ); ?></li> |
| 1219 |
</ul> |
| 1220 |
</div> |
| 1221 |
</div> |
| 1222 |
|
| 1223 |
</div> |
| 1224 |
<?php |
| 1225 |
|
| 1226 |
$obj->expand_section_end( $section_param_arr ); |
| 1227 |
} |
| 1228 |
|
| 1229 |
function wpbc_welcome_section_10_14( $obj ){ |
| 1230 |
|
| 1231 |
$section_param_arr = array( 'version_num' => '10.14', 'show_expand' => true ); |
| 1232 |
|
| 1233 |
$obj->expand_section_start( $section_param_arr ); |
| 1234 |
|
| 1235 |
|
| 1236 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: 2024-06-01 comment this |
| 1237 |
|
| 1238 |
|
| 1239 |
// <editor-fold defaultstate="collapsed" desc=" = F R E E = " > |
| 1240 |
// ----------------------------------------------------------------------------------------------------------------- |
| 1241 |
// = F R E E = |
| 1242 |
// ----------------------------------------------------------------------------------------------------------------- |
| 1243 |
?> |
| 1244 |
<div class="wpbc_wn_container"> |
| 1245 |
<div class="wpbc_wn_section"> |
| 1246 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Control start and end dates for booking and availability' ) ); ?></h2> |
| 1247 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1248 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1249 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.14/wp_booking_calendar_elementor_advanced_01.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1250 |
<span><span style="font-size: 0.9em;font-style: italic;"><?php //echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Available in the Booking Calendar Business Small or higher versions' ) ); ?></span></span> |
| 1251 |
</div> |
| 1252 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1253 |
<ul> |
| 1254 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Control which dates are shown!**: You can now control which dates are shown in the Booking Calendar by using two new shortcode parameters: **[booking resource_id=1 calendar_dates_start=\'2025-01-01\' calendar_dates_end=\'2025-12-31\']**' ) ); ?></li> |
| 1255 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **New**: Ability to **set the start and end dates for the calendar** using shortcode parameters. Example: [booking resource_id=1 calendar_dates_start=\'2025-01-01\' calendar_dates_end=\'2025-12-31\' startmonth=\'2025-3\']' ) ); ?></li> |
| 1256 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **New**: If startmonth is omitted, the calendar will now automatically use the month from calendar_dates_start as the initial display month. Example: [booking resource_id=1 calendar_dates_start=\'2025-01-01\' calendar_dates_end=\'2025-12-31\']' ) ); ?></li> |
| 1257 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **New**: New: You can now **allow users to submit bookings for past dates**, as long as those dates are within the visible range set by calendar_dates_start and calendar_dates_end in the shortcode. Useful for administrative or backdated bookings. Shortcode Example: [booking resource_id=1 calendar_dates_start=\'2025-01-01\' calendar_dates_end=\'2025-12-31\']' ) ); ?></li> |
| 1258 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **New**: Elementor native supports of these parameters calendar_dates_start=\'2025-01-01\' calendar_dates_end=\'2025-12-31\' in Advanced section.' ) ); ?></li> |
| 1259 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improvement**: When calendar_dates_start and calendar_dates_end are defined in the shortcode, the system skips checking availability from today, and instead starts from the defined calendar_dates_start.' ) ); ?></li> |
| 1260 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Improvement**: To **enable the new Smart Phone Validation** feature introduced in the previous update, go to: WP Booking Calendar > Settings > Booking Form > Form Options and enable the "Smart Phone Validation" option. It is disabled by default.' ) ); ?></li> |
| 1261 |
</ul> |
| 1262 |
</div> |
| 1263 |
</div> |
| 1264 |
</div> |
| 1265 |
<?php |
| 1266 |
|
| 1267 |
$obj->expand_section_end( $section_param_arr ); |
| 1268 |
} |
| 1269 |
|
| 1270 |
function wpbc_welcome_section_10_13( $obj ){ |
| 1271 |
|
| 1272 |
$section_param_arr = array( 'version_num' => '10.13', 'show_expand' => true ); |
| 1273 |
|
| 1274 |
$obj->expand_section_start( $section_param_arr ); |
| 1275 |
|
| 1276 |
|
| 1277 |
// $obj->asset_path = 'http://beta/assets/'; // TODO: 2024-06-01 comment this |
| 1278 |
|
| 1279 |
|
| 1280 |
// <editor-fold defaultstate="collapsed" desc=" = F R E E = " > |
| 1281 |
// ----------------------------------------------------------------------------------------------------------------- |
| 1282 |
// = F R E E = |
| 1283 |
// ----------------------------------------------------------------------------------------------------------------- |
| 1284 |
?> |
| 1285 |
<div class="wpbc_wn_container"> |
| 1286 |
<div class="wpbc_wn_section"> |
| 1287 |
<h2><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Smarter Bookings, Elementor Integration and Cleaner Interface' ) ); ?></h2> |
| 1288 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1289 |
<h3><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '**Booking Calendar meets Elementor!**' ) ); ?></h3> |
| 1290 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1291 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.13/wp_booking_calendar_elementor_01.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1292 |
<span><span style="font-size: 0.9em;font-style: italic;"><?php //echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Available in the Booking Calendar Business Small or higher versions' ) ); ?></span></span> |
| 1293 |
</div> |
| 1294 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1295 |
<ul> |
| 1296 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Full Elementor Support!**: Design and customize your booking forms directly inside the Elementor editor—with real-time form previews and a built-in skin selector. No more shortcode guesswork—just drag, configure, and save!' ) ); ?></li> |
| 1297 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Calendar Preloader:** We’ve added a smooth-loading preloader bar that prevents layout jumps on slower connections, ensuring a polished experience for your visitors.' ) ); ?></li> |
| 1298 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **New Booking Form Template – Service Selection Wizard (Pro):** Perfect for appointment-based bookings: this template features a left-side service selector with a streamlined date/time step for faster, easier bookings.' ) ); ?></li> |
| 1299 |
</ul> |
| 1300 |
</div> |
| 1301 |
</div> |
| 1302 |
<hr class="wpbc_hr_dots"><?php // ---------------------------------------------------------------------- ?> |
| 1303 |
<div class="wpbc_wn_section"> |
| 1304 |
<div class="wpbc_wn_col" style="flex: 1 1 45%;margin: 10px 0;"> |
| 1305 |
<h3><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '**Cleaner & More Intuitive Interface**' ) ); ?></h3> |
| 1306 |
<ul> |
| 1307 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Updated Sidebar Navigation:** All plugin menus now live in a single, collapsible sidebar—easier to navigate and quicker to access.' ) ); ?></li> |
| 1308 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Visual Polish & UX Tweaks:** We’ve made subtle design upgrades across the board: improved calendar styling, better visual hierarchy, smarter warnings (e.g., duplicate calendar IDs), and more compact menu visuals in compact mode.' ) ); ?></li> |
| 1309 |
</ul> |
| 1310 |
</div> |
| 1311 |
<div class="wpbc_wn_col" style="flex: 1 1 50%;margin: 0px 0;"> |
| 1312 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1313 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.13/vertical_menu_01.png' ) ); ?>" style="margin:10px 0;width:98%;" /> |
| 1314 |
<span><span style="font-size: 0.9em;font-style: italic;"><?php //echo wp_kses_post( wpbc_replace_to_strong_symbols( 'Available in the Booking Calendar Business Small or higher versions' ) ); ?></span></span> |
| 1315 |
</div> |
| 1316 |
</div> |
| 1317 |
<hr class="wpbc_hr_dots"><?php // ---------------------------------------------------------------------- ?> |
| 1318 |
<div class="wpbc_wn_section"> |
| 1319 |
<div class="wpbc_wn_col" style="flex: 1 1 45%;margin: 10px 0;"> |
| 1320 |
<h3><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '**Smart Phone Validation**' ) ); ?></h3> |
| 1321 |
<ul> |
| 1322 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Auto-Detect & Format Phone Fields:** Phone fields now automatically detect and format numbers based on the user’s input and locale. Start typing +1 and the field instantly formats to +1 000 000 0000 (USA); type +34 for Spain and get +34 000 000 0000.' ) ); ?></li> |
| 1323 |
</ul> |
| 1324 |
</div> |
| 1325 |
<div class="wpbc_wn_col" style="flex: 1 1 50%;margin: 0px 0;"> |
| 1326 |
<?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?> |
| 1327 |
<img src="<?php echo esc_attr( $obj->section_img_url( '10.13/phone_validattion_01.png' ) ); ?>" style="margin:10px auto;max-width:600px;" /> |
| 1328 |
</div> |
| 1329 |
<div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> |
| 1330 |
<ul> |
| 1331 |
<li><?php echo wp_kses_post( wpbc_replace_to_strong_symbols( '• **Built-In Intelligence – No Setup Required** We intelligently detect phone fields by name (e.g., “phone”, “fone”, “tel”, “mobile”, “telefono”, etc.) and apply the right mask and placeholder automatically—no third-party APIs needed. Only valid digits are allowed; unsupported characters are blocked instantly.' ) ); ?></li> |
| 1332 |
</ul> |
| 1333 |
</div> |
| 1334 |
</div> |
| 1335 |
|
| 1336 |
</div> |
| 1337 |
<?php |
| 1338 |
|
| 1339 |
$obj->expand_section_end( $section_param_arr ); |
| 1340 |
} |
| 1341 |
|