CI / Tests (PHP 8.1) (pull_request) Successful in 47s
CI / Tests (PHP 8.2) (pull_request) Successful in 54s
CI / No Debug Code (pull_request) Successful in 2s
CI / PHPStan (pull_request) Successful in 2m51s
CI / Coding Standards (pull_request) Successful in 2m56s
CI / Tests (PHP 8.3) (pull_request) Successful in 2m42s
CI / Build Plugin Zip (pull_request) Skipped
Three sidebar options on the Lesson Booking block, all mirrored as shortcode attributes and carried to the front end as data attributes on #us-booking-app (or as omitted containers): - Lesson type (lessonTypeId / lesson_type) pins the calendar to a single private-lesson type: only the times bookable as it are listed, and it is the only type bookable there, auto-selected on the registration form. A pinned type that is no longer offered says so instead of showing an empty calendar. - Show the lesson-type filter (showTypeFilter / show_filter) drops the "Show Only" control for studios that do not want it. - Sections (displayMode / show) embeds one half of the page — the booking calendar or the student's upcoming lessons — so the two can live on different pages. The script skips the work belonging to a missing half: no availability or catalog request for an upcoming-only embed, no bookings request for a booking-only one. An unrecognised value renders the whole page. The editor preview follows the same setting. Also fixes the expanded filter's first lesson type sharing a line with the "Lesson type" heading — the choices now sit in their own row beneath it. Co-Authored-By: Claude Opus 5 <[email protected]>
27 lines
1.2 KiB
PHP
27 lines
1.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
if (! defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
/** @var int $lessonTypeId Offering id when the calendar is pinned to one lesson type; 0 for every type. */
|
|
/** @var bool $showTypeFilter Whether the "Show Only" lesson-type filter is offered. */
|
|
/** @var bool $showBooking Whether the booking calendar is part of this embed. */
|
|
/** @var bool $showUpcoming Whether the student's upcoming-lessons panel is part of this embed. */
|
|
?>
|
|
<div id="us-booking-app" data-nonce="<?php echo esc_attr(wp_create_nonce('wp_rest')); ?>"<?php echo $lessonTypeId > 0 ? ' data-lesson-type="' . esc_attr((string) $lessonTypeId) . '"' : ''; ?><?php echo $showTypeFilter ? '' : ' data-type-filter="0"'; ?>>
|
|
<?php if ($showUpcoming) : ?>
|
|
<div id="us-my-lessons"></div>
|
|
<?php endif; ?>
|
|
<?php if ($showBooking) : ?>
|
|
<div id="us-slot-list">
|
|
<p><?php esc_html_e('Loading available slots…', 'unsupervised-schedular'); ?></p>
|
|
</div>
|
|
<div id="us-booking-confirmation" style="display:none;">
|
|
<p><?php esc_html_e('Your lesson has been booked. The instructor will confirm shortly.', 'unsupervised-schedular'); ?></p>
|
|
</div>
|
|
<?php endif; ?>
|
|
<div id="us-booking-error" style="display:none;" role="alert"></div>
|
|
</div>
|