legacyShortcode($this); } public function render(): string { if ( ! is_user_logged_in() && ( new \ABeCe\Booking\Service\CalendarSettingsService( new \ABeCe\Booking\Repository\CalendarSettingsRepository() ) )->get()['public_calendar_visibility'] === 'hidden' ) { return '
' . esc_html__( 'Log in to view the calendar.', 'abece-booking' ) . '
' . esc_html__( 'Log in', 'abece-booking' ) . '' . esc_html__( 'Booking is temporarily unavailable. Please try again later.', 'abece-booking' ) . '
'; } $asset = require $path . 'public.asset.php'; $style = dirname( $this->file ) . '/public-ui/public.css'; $style_version = is_readable( $style ) ? substr( hash_file( 'sha256', $style ), 0, 16 ) : $asset['version']; wp_enqueue_script( 'abece-booking-public', plugins_url( 'assets/build/public.js', $this->file ), $asset['dependencies'], $asset['version'], true ); wp_enqueue_style( 'abece-booking-public', plugins_url( 'public-ui/public.css', $this->file ), [], $style_version ); wp_enqueue_style( 'abece-booking-calendar', plugins_url( 'assets/build/calendar.css', $this->file ), [], $asset['version'] ); wp_set_script_translations( 'abece-booking-public', 'abece-booking', dirname( $this->file ) . '/languages' ); $id = wp_unique_id( 'abece-booking-public-' ); $config = [ 'id' => $id, 'restUrl' => rest_url( 'abece-booking/v1/' ), 'nonce' => wp_create_nonce( 'wp_rest' ), 'privacyPolicyUrl'=>get_privacy_policy_url(), 'authenticated' => is_user_logged_in(), 'locale'=>\ABeCe\Booking\Support\LocaleContext::current(), 'requestLocale'=>'site', 'timeFormat'=>get_option('time_format'), 'timezone'=>wp_timezone()->getName(), 'membershipsEnabled'=>\ABeCe\Booking\Service\MembershipModeService::enabled(), 'loginUrl' => wp_login_url( get_permalink() ?: home_url() ) ]; wp_add_inline_script( 'abece-booking-public', 'window.ABeCeBookingFeatures = '.wp_json_encode(\ABeCe\Booking\Edition\Entitlements::current()->manifest()['features']).';window.ABeCeBookingPublic = window.ABeCeBookingPublic || []; window.ABeCeBookingPublic.push(' . wp_json_encode( $config, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT ) . ');', 'before' ); return ''; } }