| @@ -1,4 +1,4 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | // Exit if accessed directly |
| 4 | 4 | if ( !defined( 'ABSPATH' ) ) exit; |
| @@ -3,8 +3,304 @@ | ||
| 3 | 3 | // Exit if accessed directly |
| 4 | 4 | if ( !defined( 'ABSPATH' ) ) exit; |
| 5 | 5 | |
| 6 | 6 | /** |
| 7 | + * Render Booking Calendar 11.9 What's New content. | |
| 8 | + * | |
| 9 | + * @param object $obj Welcome-page renderer and image loader. | |
| 10 | + * | |
| 11 | + * @return void | |
| 12 | + */ | |
| 13 | +function wpbc_welcome_section_11_9( $obj ) { | |
| 14 | + | |
| 15 | + $section_parameters = array( 'version_num' => '11.9', 'show_expand' => false ); | |
| 16 | + $obj->expand_section_start( $section_parameters ); | |
| 17 | + // $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. | |
| 18 | + ?> | |
| 19 | + <div class="wpbc_wn_container"> | |
| 20 | + <div class="wpbc_wn_section" style="gap: 10px 32px;"> | |
| 21 | + <h2><?php echo ( 'A Simpler Setup Wizard for Every Booking Journey' ); ?></h2> | |
| 22 | + <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> | |
| 23 | + <img | |
| 24 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__setup_wizard_customer_journeys_placeholder_2.png' ) ); ?>" | |
| 25 | + alt="<?php echo esc_attr( 'Booking Calendar Setup Wizard showing customer journey choices and the guided setup steps' ); ?>" | |
| 26 | + style="margin:10px 0;width:98%;" | |
| 27 | + /> | |
| 28 | + </div> | |
| 29 | + <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> | |
| 30 | + <p><?php echo ( 'The redesigned Setup Wizard starts with one practical question: how should customers book? After you choose the answer, it presents only the settings needed for that booking flow instead of asking you to configure every Booking Calendar option.' ); ?></p> | |
| 31 | + <ul> | |
| 32 | + <li><strong><?php echo ( 'Begin with the right next step.' ); ?></strong> <?php echo ( 'A first activation from Plugins opens Setup Wizard directly, while a manual update opens What\'s New after the update without interrupting automatic, command-line, or managed live-demo maintenance.' ); ?></li> | |
| 33 | + <li><strong><?php echo ( 'Follow a focused path.' ); ?></strong> <?php echo ( 'The wizard guides you through the matching Date Selection, Booking Resources or Services, time choices, availability, Booking Form, appearance, publishing, and review steps.' ); ?></li> | |
| 34 | + <li><strong><?php echo ( 'Start from the right defaults.' ); ?></strong> <?php echo ( 'Journey-aware recommendations select compatible date behavior and Booking Form templates. Multi-date time journeys also configure their Start and End Times, with Working Hours available only when you want that extra restriction.' ); ?></li> | |
| 35 | + <li><strong><?php echo ( 'Publish and test the result clearly.' ); ?></strong> <?php echo ( 'Non-guided journeys start with a direct Booking Form page, Review links to the published page, and the testing window places your configured page before separate starter examples.' ); ?></li> | |
| 36 | + <li><strong><?php echo ( 'Save as you go.' ); ?></strong> <?php echo ( 'Each step saves its settings, unfinished setup can resume later, and the final Setup overview provides clear links for testing, publishing, and future changes.' ); ?></li> | |
| 37 | + </ul> | |
| 38 | + <h3><?php echo ( 'Choose the customer journey that matches your business' ); ?></h3> | |
| 39 | + <div style="display:flex;flex-wrap:wrap;gap:18px;"> | |
| 40 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 41 | + <img | |
| 42 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_single_full_day_placeholder.png' ) ); ?>" | |
| 43 | + width="420" | |
| 44 | + height="236" | |
| 45 | + loading="lazy" | |
| 46 | + alt="<?php echo esc_attr( 'Calendar with one complete date selected for a Single full day booking' ); ?>" | |
| 47 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 48 | + /> | |
| 49 | + <h4><?php echo ( 'Single full day' ); ?></h4> | |
| 50 | + <p><?php echo ( 'Customers reserve one complete date without choosing a time.' ); ?></p> | |
| 51 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'One-day rentals, events and daily reservations.' ); ?></p> | |
| 52 | + </div> | |
| 53 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 54 | + <img | |
| 55 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_multiple_independent_full_days_placeholder.png' ) ); ?>" | |
| 56 | + width="420" | |
| 57 | + height="236" | |
| 58 | + loading="lazy" | |
| 59 | + alt="<?php echo esc_attr( 'Calendar with several separate dates selected for a Multiple independent full days booking' ); ?>" | |
| 60 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 61 | + /> | |
| 62 | + <h4><?php echo ( 'Multiple independent full days' ); ?></h4> | |
| 63 | + <p><?php echo ( 'Customers select several separate full dates in one booking.' ); ?></p> | |
| 64 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Bookings that cover several non-consecutive days.' ); ?></p> | |
| 65 | + </div> | |
| 66 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 67 | + <img | |
| 68 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_flexible_date_range_placeholder.png' ) ); ?>" | |
| 69 | + width="420" | |
| 70 | + height="236" | |
| 71 | + loading="lazy" | |
| 72 | + alt="<?php echo esc_attr( 'Calendar with the first and last date selected for a Flexible date range booking' ); ?>" | |
| 73 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 74 | + /> | |
| 75 | + <h4><?php echo ( 'Flexible date range' ); ?></h4> | |
| 76 | + <p><?php echo ( 'Customers choose the first and last date of a variable-length booking.' ); ?></p> | |
| 77 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Stays and rentals whose length varies by booking.' ); ?></p> | |
| 78 | + </div> | |
| 79 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 80 | + <img | |
| 81 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_fixed_length_date_range_placeholder.png' ) ); ?>" | |
| 82 | + width="420" | |
| 83 | + height="236" | |
| 84 | + loading="lazy" | |
| 85 | + alt="<?php echo esc_attr( 'Calendar with an automatically selected Fixed-length date range' ); ?>" | |
| 86 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 87 | + /> | |
| 88 | + <h4><?php echo ( 'Fixed-length date range' ); ?></h4> | |
| 89 | + <p><?php echo ( 'Customers choose a start date and the configured range is selected automatically.' ); ?></p> | |
| 90 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Weekend, multi-day and weekly packages.' ); ?></p> | |
| 91 | + </div> | |
| 92 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 93 | + <img | |
| 94 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_check_in_out_changeover_placeholder.png' ) ); ?>" | |
| 95 | + width="420" | |
| 96 | + height="236" | |
| 97 | + loading="lazy" | |
| 98 | + alt="<?php echo esc_attr( 'Calendar showing arrival and departure boundaries for a Check-in and check-out changeover booking' ); ?>" | |
| 99 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 100 | + /> | |
| 101 | + <h4><?php echo ( 'Check-in & check-out changeover' ); ?></h4> | |
| 102 | + <p><?php echo ( 'Customers choose arrival and departure dates with changeover boundaries.' ); ?></p> | |
| 103 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Accommodation and rentals with arrival and departure times.' ); ?></p> | |
| 104 | + </div> | |
| 105 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 106 | + <img | |
| 107 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_fixed_time_slots_placeholder.png' ) ); ?>" | |
| 108 | + width="420" | |
| 109 | + height="236" | |
| 110 | + loading="lazy" | |
| 111 | + alt="<?php echo esc_attr( 'Calendar and predefined appointment choices for a Fixed time slots booking' ); ?>" | |
| 112 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 113 | + /> | |
| 114 | + <h4><?php echo ( 'Fixed time slots' ); ?></h4> | |
| 115 | + <p><?php echo ( 'Customers select one predefined available time slot.' ); ?></p> | |
| 116 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Classes, consultations and fixed timetables.' ); ?></p> | |
| 117 | + </div> | |
| 118 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 119 | + <img | |
| 120 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_start_end_time_placeholder.png' ) ); ?>" | |
| 121 | + width="420" | |
| 122 | + height="236" | |
| 123 | + loading="lazy" | |
| 124 | + alt="<?php echo esc_attr( 'Calendar with separate start and end choices for a Start and end time booking' ); ?>" | |
| 125 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 126 | + /> | |
| 127 | + <h4><?php echo ( 'Start & end time' ); ?></h4> | |
| 128 | + <p><?php echo ( 'Customers choose both ends of a flexible appointment time range.' ); ?></p> | |
| 129 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Flexible appointments, equipment use and variable-duration work.' ); ?></p> | |
| 130 | + </div> | |
| 131 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 132 | + <img | |
| 133 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_start_time_duration_placeholder.png' ) ); ?>" | |
| 134 | + width="420" | |
| 135 | + height="236" | |
| 136 | + loading="lazy" | |
| 137 | + alt="<?php echo esc_attr( 'Calendar with start-time and duration choices for a Start time and duration booking' ); ?>" | |
| 138 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 139 | + /> | |
| 140 | + <h4><?php echo ( 'Start time + duration' ); ?></h4> | |
| 141 | + <p><?php echo ( 'Customers choose a start time and one of the available durations.' ); ?></p> | |
| 142 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Appointments offered in standard duration choices.' ); ?></p> | |
| 143 | + </div> | |
| 144 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 145 | + <img | |
| 146 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_repeated_time_multiple_dates_placeholder.png' ) ); ?>" | |
| 147 | + width="420" | |
| 148 | + height="236" | |
| 149 | + loading="lazy" | |
| 150 | + alt="<?php echo esc_attr( 'Calendar with multiple dates sharing one selected time for a repeated-time booking' ); ?>" | |
| 151 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 152 | + /> | |
| 153 | + <h4><?php echo ( 'Repeat one time on multiple dates' ); ?></h4> | |
| 154 | + <p><?php echo ( 'Customers select several dates and use the same time on every selected date.' ); ?></p> | |
| 155 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Recurring sessions submitted together for the same daily time.' ); ?></p> | |
| 156 | + </div> | |
| 157 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 158 | + <img | |
| 159 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_first_date_start_last_date_end_placeholder.png' ) ); ?>" | |
| 160 | + width="420" | |
| 161 | + height="236" | |
| 162 | + loading="lazy" | |
| 163 | + alt="<?php echo esc_attr( 'Multi-day calendar with a start time on the first date and an end time on the last date' ); ?>" | |
| 164 | + style="display:block;margin:0 auto 12px;width:100%;max-width:300px;height:auto;" | |
| 165 | + /> | |
| 166 | + <h4><?php echo ( 'First-date start & last-date end' ); ?></h4> | |
| 167 | + <p><?php echo ( 'Customers choose a start on the first date and an end on the last date.' ); ?></p> | |
| 168 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Multi-day bookings with different arrival and departure times.' ); ?></p> | |
| 169 | + </div> | |
| 170 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"> | |
| 171 | + <img | |
| 172 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__journey_guided_appointment_flow_placeholder.png' ) ); ?>" | |
| 173 | + width="420" | |
| 174 | + height="236" | |
| 175 | + loading="lazy" | |
| 176 | + alt="<?php echo esc_attr( 'Guided appointment sequence showing Service, Provider, Date, Time, and Details steps' ); ?>" | |
| 177 | + style="display:block;margin:0 0 12px;width:100%;max-width:300px;height:auto;" | |
| 178 | + /> | |
| 179 | + <h4><?php echo ( 'Guided appointment flow' ); ?></h4> | |
| 180 | + <p><?php echo ( 'Customers choose a Service, Provider and available start time step by step.' ); ?></p> | |
| 181 | + <p><strong><?php echo ( 'Best for:' ); ?></strong> <?php echo ( 'Businesses with several Services or Providers.' ); ?></p> | |
| 182 | + </div> | |
| 183 | + <div class="wpbc_wn_col" style="flex:1 1 28%;min-width:240px;margin:0;padding:12px;"></div> | |
| 184 | + </div> | |
| 185 | + </div> | |
| 186 | + </div> | |
| 187 | + <div class="wpbc_wn_section" style="gap: 10px 50px;"> | |
| 188 | + <h2><?php echo( 'Select the Date Range You Point To' ); ?></h2> | |
| 189 | + <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;"> | |
| 190 | + <img | |
| 191 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__range_selection_pointer_period_placeholder.gif' ) ); ?>" | |
| 192 | + width="1600" | |
| 193 | + height="900" | |
| 194 | + loading="lazy" | |
| 195 | + alt="<?php echo esc_attr( 'Booking calendar highlighting the valid date range that contains the pointed date' ); ?>" | |
| 196 | + style="margin:10px 0;width:98%;height:auto;" | |
| 197 | + /> | |
| 198 | + </div> | |
| 199 | + <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> | |
| 200 | + <ul> | |
| 201 | + <li><strong><?php echo( 'Keep hover and click together.' ); ?></strong> <?php echo( 'Fixed and Dynamic range selection now previews and selects the same valid period containing the date a visitor points to.' ); ?></li> | |
| 202 | + <li><strong><?php echo( 'Preserve the visitor\'s choice.' ); ?></strong> <?php echo( 'Invalid end dates leave the first Dynamic-range click in place, while conditional Season, weekday, and exact-date rules use the actual range start.' ); ?></li> | |
| 203 | + <li><span><?php echo( 'Available in the Booking Calendar Business Medium or igher versions' ); ?></span> <?php ?></li> | |
| 204 | + </ul> | |
| 205 | + </div> | |
| 206 | + </div> | |
| 207 | + <div class="wpbc_wn_section" style="gap: 10px 50px;"> | |
| 208 | + <h2><?php echo ( 'Prevent Unbookable Date Gaps' ); ?></h2> | |
| 209 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 210 | + <p><strong><?php echo ( 'Before' ); ?></strong></p> | |
| 211 | + <img | |
| 212 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__unbookable_date_gaps_before_placeholder.png' ) ); ?>" | |
| 213 | + alt="<?php echo esc_attr( 'Booking calendar before enabling Unbookable date gaps, with a short bounded opening still shown as selectable' ); ?>" | |
| 214 | + style="margin:10px 0;width:98%;" | |
| 215 | + /> | |
| 216 | + </div> | |
| 217 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 218 | + <p><strong><?php echo ( 'After' ); ?></strong></p> | |
| 219 | + <img | |
| 220 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__unbookable_date_gaps_after_placeholder.png' ) ); ?>" | |
| 221 | + alt="<?php echo esc_attr( 'Booking calendar after enabling Unbookable date gaps, with the same impossible opening shown as unavailable' ); ?>" | |
| 222 | + style="margin:10px 0;width:98%;" | |
| 223 | + /> | |
| 224 | + </div> | |
| 225 | + <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> | |
| 226 | + <ul> | |
| 227 | + <li><strong><?php echo ( 'Stop visitors at impossible openings.' ); ?></strong> <?php echo ( 'Business Small and higher editions can optionally show a bounded opening as unavailable when no configured fixed or dynamic date range can fit.' ); ?></li> | |
| 228 | + <li><strong><?php echo ( 'Follow the active booking rules.' ); ?></strong> <?php echo ( 'The calendar respects permitted range lengths, start weekdays, conditional date and Season rules, changeovers, pending dates, and Resource capacity before marking the opening unavailable.' ); ?></li> | |
| 229 | + </ul> | |
| 230 | + </div> | |
| 231 | + </div> | |
| 232 | + <div class="wpbc_wn_section" style="gap: 10px 50px;"> | |
| 233 | + <h2><?php echo ( 'Manage Split Working Time' ); ?></h2> | |
| 234 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 235 | + <img | |
| 236 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/wp_booking_calendar__schedule_rules_multi_interval_placeholder.png' ) ); ?>" | |
| 237 | + alt="<?php echo esc_attr( 'Schedule and Rules Working Time editor showing two non-overlapping intervals for one weekday with Add interval and remove actions' ); ?>" | |
| 238 | + style="margin:10px 0;width:98%;" | |
| 239 | + /> | |
| 240 | + </div> | |
| 241 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 242 | + <ul> | |
| 243 | + <li><strong><?php echo ( 'Keep breaks in the normal week.' ); ?></strong> <?php echo ( 'Add several non-overlapping Working Time intervals to a weekday so gaps such as lunch remain unavailable.' ); ?></li> | |
| 244 | + <li><strong><?php echo ( 'Use the same schedule everywhere.' ); ?></strong> <?php echo ( 'Schedule & Rules reads and saves default and Resource-specific intervals used by the Setup Wizard and appointment availability.' ); ?></li> | |
| 245 | + </ul> | |
| 246 | + </div> | |
| 247 | + </div> | |
| 248 | + <div class="wpbc_wn_section" style="gap: 10px 50px;"> | |
| 249 | + <h2><?php echo ( 'New Appointment Services Booking Flow' ); ?></h2> | |
| 250 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 251 | + <img | |
| 252 | + src="<?php echo esc_attr( $obj->section_img_url( '11.9/appointments_services_flow_02.png' ) ); ?>" | |
| 253 | + alt="<?php echo esc_attr( 'Appointment Services booking form with a live selection summary, calendar, duration, and start-time choices' ); ?>" | |
| 254 | + style="margin:10px 0;width:98%;" | |
| 255 | + /> | |
| 256 | + </div> | |
| 257 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 258 | + <ul> | |
| 259 | + <li><strong><?php echo ( 'See the appointment before continuing.' ); ?></strong> <?php echo ( 'Visitors choose a Service duration, date, and start time while a live summary shows the selected date, start, and end time.' ); ?></li> | |
| 260 | + <li><strong><?php echo ( 'Finish in a focused second step.' ); ?></strong> <?php echo ( 'Customer details, Terms agreement, Back, and Book appointment actions stay together on one responsive page.' ); ?></li> | |
| 261 | + <li><strong><?php echo ( 'Keep existing forms unchanged.' ); ?></strong> <?php echo ( 'The new flow is used for newly created Appointment Services forms without replacing existing forms or their templates.' ); ?></li> | |
| 262 | + </ul> | |
| 263 | + </div> | |
| 264 | + </div> | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + <div class="wpbc_wn_section" style="gap: 10px 50px;"> | |
| 272 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 273 | + <div class="wpbc_wn_section" style="gap: 10px 50px;"> | |
| 274 | + <h2><?php echo ( 'Add a Country List Visually' ); ?></h2> | |
| 275 | + <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> | |
| 276 | + <ul> | |
| 277 | + <li><strong><?php echo ( 'Add a ready-made country selector.' ); ?></strong> <?php echo ( 'Drag the Country List field into a visual booking form, then configure its label, help text, and validated default country.' ); ?></li> | |
| 278 | + <li><strong><?php echo ( 'Keep form output synchronized.' ); ?></strong> <?php echo ( 'Saving generates the supported Country shortcode in Advanced Mode and its matching Booking Data token.' ); ?></li> | |
| 279 | + </ul> | |
| 280 | + </div> | |
| 281 | + </div> | |
| 282 | + </div> | |
| 283 | + <div class="wpbc_wn_col" style="flex: 1 1 40%;margin: 0;padding: 0;"> | |
| 284 | + <div class="wpbc_wn_section" style="gap: 10px 50px;"> | |
| 285 | + <h2><?php echo ( 'Add Discount Coupons Visually' ); ?></h2> | |
| 286 | + <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> | |
| 287 | + <ul> | |
| 288 | + <li><strong><?php echo ( 'Add the coupon input without editing code.' ); ?></strong> <?php echo ( 'Business Large and higher editions can drag one Discount Coupon field into a visual booking form and configure its content and appearance.' ); ?></li> | |
| 289 | + <li><strong><?php echo ( 'See edition requirements clearly.' ); ?></strong> <?php echo ( 'Lower editions show an upgrade badge and explanation without publishing an unsupported coupon input.' ); ?></li> | |
| 290 | + <li><strong><?php echo ( 'Keep form output synchronized.' ); ?></strong> <?php echo ( 'Saving generates the Coupon shortcode in Advanced Mode and its matching Booking Data token.' ); ?></li> | |
| 291 | + </ul> | |
| 292 | + </div> | |
| 293 | + </div> | |
| 294 | + </div> | |
| 295 | + </div> | |
| 296 | + | |
| 297 | + </div> | |
| 298 | + <?php | |
| 299 | + $obj->expand_section_end( $section_parameters ); | |
| 300 | +} | |
| 301 | + | |
| 302 | +/** | |
| 7 | 303 | * Render Booking Calendar 11.8.1 What's New content. |
| 8 | 304 | * |
| 9 | 305 | * @param object $obj Welcome-page renderer and image loader. |
| 10 | 306 | * |
| @@ -11,9 +307,9 @@ | ||
| 11 | 307 | * @return void |
| 12 | 308 | */ |
| 13 | 309 | function wpbc_welcome_section_11_8_1( $obj ) { |
| 14 | 310 | |
| 15 | - $section_parameters = array( 'version_num' => '11.8.1', 'show_expand' => false ); | |
| 311 | + $section_parameters = array( 'version_num' => '11.8.1', 'show_expand' => true ); | |
| 16 | 312 | $obj->expand_section_start( $section_parameters ); |
| 17 | 313 | // $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 18 | 314 | ?> |
| 19 | 315 | |
| @@ -33,9 +329,9 @@ | ||
| 33 | 329 | </div> |
| 34 | 330 | <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> |
| 35 | 331 | <ul> |
| 36 | 332 | <li><strong><?php echo( 'Choose Setup when you are ready.' ); ?></strong> <?php echo( 'New installations show one focused invitation on Booking Listing. Start guided Setup immediately or postpone it; either choice is remembered.' ); ?></li> |
| 37 | - <li><strong><?php echo( 'Test the visitor experience immediately.' ); ?></strong> <?php echo( 'A second one-time window shows complete previews and links to valid published starter pages, including the resource-first Resource Selection workflow. After automatic dismissal, new installations can reopen it from the Booking Listing welcome panel. Live demos also show the welcome section without saving a shared dismissal. The top Booking Calendar menu keeps the public links in a predictable workflow order and places the Home page last.' ); ?></li> | |
| 333 | + <li><strong><?php echo( 'Test the visitor experience immediately.' ); ?></strong> <?php echo( 'A second one-time window shows complete previews and links to valid published starter pages, including the resource-first Resource Selection workflow. Automatic dismissal is remembered for that administrator and site, while manual reopening remains available from the Booking Listing welcome panel. Live demos also show the welcome section without saving a shared dismissal. The top Booking Calendar menu keeps the public links in a predictable workflow order and places the Home page last.' ); ?></li> | |
| 38 | 334 | </ul> |
| 39 | 335 | </div> |
| 40 | 336 | </div> |
| 41 | 337 | </div> |
| @@ -52,9 +348,9 @@ | ||
| 52 | 348 | <div class="wpbc_wn_col" style="flex: 1 1 100%;margin: 0;padding: 0;"> |
| 53 | 349 | <ul> |
| 54 | 350 | <li><strong><?php echo( 'Choose date and time together.' ); ?></strong> <?php echo( 'The calendar, time choices, and live Date, Start Time, and End Time summary share one clear first step.' ); ?></li> |
| 55 | 351 | <li><strong><?php echo( 'Finish details on a focused second step.' ); ?></strong> <?php echo( 'Visitors continue to contact, guest, and Terms fields before sending the booking.' ); ?></li> |
| 56 | - <li><strong><?php echo( 'Ready to find and reuse.' ); ?></strong> <?php echo( 'When initially added, the Time-Slots template appears first overall and, within Full Days, Two Columns appears before Vertical. Clean installations use the Time-Slots template on their starter page. Updates preserve existing forms, pages, custom URLs, and installed template copies.' ); ?></li> | |
| 352 | + <li><strong><?php echo( 'Ready to find and reuse.' ); ?></strong> <?php echo( 'When initially added, the Time-Slots template appears first overall and, within Full Days, Two Columns appears before Vertical. Clean installations use the Time-Slots template on their starter page. Updates preserve existing forms, pages, custom URLs, and installed template copies.' ); ?></li> | |
| 57 | 353 | </ul> |
| 58 | 354 | </div> |
| 59 | 355 | </div> |
| 60 | 356 | </div> |
| @@ -80,9 +376,9 @@ | ||
| 80 | 376 | * @return void |
| 81 | 377 | */ |
| 82 | 378 | function wpbc_welcome_section_11_8( $obj ) { |
| 83 | 379 | |
| 84 | - $section_parameters = array( 'version_num' => '11.8', 'show_expand' => false ); | |
| 380 | + $section_parameters = array( 'version_num' => '11.8', 'show_expand' => true ); | |
| 85 | 381 | // $obj->asset_path = 'http://beta/assets/'; // TODO: comment this in production. |
| 86 | 382 | $obj->expand_section_start( $section_parameters ); |
| 87 | 383 | ?> |
| 88 | 384 | <div class="wpbc_wn_container"> |