=== PosLimitless Booking === Contributors: poslimitless Tags: booking, reservation, escape-game, gift-card, events Requires at least: 5.8 Tested up to: 7.0 Requires PHP: 7.4 Stable tag: 2.6.32 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Online booking system, client portal, gift cards and events for leisure centers. == Description == PosLimitless Booking integrates PosLimitless booking modules directly into your WordPress site. **Included modules:** * **Booking** — Full booking system with calendar, time slot selection and online payment (Stripe, Monetico, Sogecommerce, CAWL) * **Confirmation** — Summary and payment page with promo codes, gift cards and options * **Client Portal** — Secure client portal with booking history, gift cards and photos * **Gift Card** — Online gift card purchase with customization and live preview * **Events** — Display public center events with registration **Features:** * 5 visual styles per module (Classic, Grid, Glassmorphism, Immersive, Dashboard) * Full customization of colors, fonts and effects * 6 pre-configured color packs * Live preview in the WordPress admin * Dark mode / light mode * Mobile responsive * Secure multi-gateway payment == Installation == 1. Upload the `poslimitless-booking` folder to `/wp-content/plugins/` 2. Activate the plugin in the Plugins menu 3. Go to PosLimitless > Configuration 4. Enter your Center ID and API Key (available in POS Limitless > API Keys) 5. Insert shortcodes into your pages == Shortcodes == * `[poslimitless_booking]` — Booking module * `[poslimitless_espace_client]` — Client portal * `[poslimitless_bon_cadeau]` — Gift cards * `[poslimitless_verif_bon_cadeau]` — Gift card balance check * `[poslimitless_roue_chance]` — Lucky wheel * `[poslimitless_event]` — Events == Frequently Asked Questions == = Where can I find my Center ID and API Key? = Log in to POS Limitless (poslimitless.web.app), go to Configuration > API Keys. You will find your Center ID there and can generate your API Key. = How do I customize the appearance? = Each module has its own appearance page in the PosLimitless menu. You can choose from 5 visual styles and customize all colors. = Which payment methods are supported? = Stripe, Monetico, Sogecommerce and CAWL. Configuration is done in POS Limitless. == Changelog == = 2.6.32 = * Admin: live preview panel on all appearance pages (Booking, Confirmation, Client portal, Gift card, Events) — pinned to the right while you scroll, with an "Expand" button that opens it full-screen in a popup. Full-width layout on these pages. * Admin: click any element in the preview (slot, card, header, button, bubble...) to jump straight to the matching setting — the field is scrolled into view, highlighted and its color picker opens. Works on every appearance page and in the live chat page. * Admin: appearance settings reorganized into correct sections with French labels and helper descriptions (sections had drifted: warning color under "Logo & Text", slot colors under "Glassmorphism"...). Booking-only settings (slots, date picker, booking bar) no longer clutter the other modules' pages. * Admin: "Glass background/border (rgba)" raw text fields replaced by a proper control — color swatch + opacity slider + live glass sample. The Glassmorphism preview now renders real frosted-glass cards over a gradient so the effect is actually visible. * Admin: booking preview now uses the configured slot colors (free / on-call / blocked / selected) and date picker background instead of hardcoded colors. * Chat admin: live chat preview with fake conversation, pinned right (popup-free), updating as you type, with click-to-setting navigation as well. * Chat: built-in icon library for the floating button — pick among 10 icons (chat, bubble, dots, phone, headset, help, mail, smiley, calendar, bolt) directly in PosLimitless > Chat en direct, no image upload needed. A custom logo image still takes priority when set. = 2.6.30 = * Booking appearance: new "Continue button position" option for the cart bar — keep it on the right (default) or center it. Configurable in PosLimitless > Booking appearance. * Booking: room info popup no longer overflows when the description was pasted from Word or another website (non-breaking spaces are normalized so text wraps normally), and long words are force-wrapped as a safety net. * Booking: room info popup banner images are preloaded once the room list is displayed, so the photo shows instantly when the popup opens (previously it only started downloading on click). A dark placeholder now fills the banner area while an image loads. * Chat: the floating button is now fully customizable from PosLimitless > Chat en direct — shape (round / rounded / square), size (40-120 px), background color, icon color, and a custom logo image picked from the media library. Empty fields keep the default look (widget color synced from POS Limitless, white icon). * Chat: full color customization of the chat window from PosLimitless > Chat en direct — header background and text, visitor bubble background and text, center bubble background and text, conversation background, and action buttons (send / start) background and text. Empty fields keep the defaults (widget color synced from POS Limitless). = 2.6.29 = * Booking: the on-site payment option, confirmation popup and processing overlay now use the center's theme accent color instead of a hard-coded blue, and the popup message uses the theme's text color (was secondary text color, too low-contrast on some themes). = 2.6.28 = * Booking: on-site payment confirmation is now instant. The confirmation email trigger is sent fire-and-forget (fetch keepalive, survives the redirect) instead of being awaited — the customer lands on the success screen as fast as with a gift card, and the email still goes out server-side a few seconds later. = 2.6.27 = * Booking: full-screen loading overlay ("Validation de votre réservation...") while an on-site payment reservation is being processed. Previously the page appeared frozen for several seconds between the confirmation popup and the success screen (reservation creation + confirmation email are synchronous). = 2.6.26 = * Compatibility: "Tested up to" bumped to WordPress 7.0 — removes the "not tested with your WordPress version" warning on recent installs. = 2.6.25 = * Technical re-release of 2.6.24 (identical content) to force a clean update propagation on WordPress.org. = 2.6.24 = * Chat: placement controls revamped. New dedicated admin page PosLimitless > Chat en direct (moved out of the Configuration page) with horizontal/vertical offsets (0-200px) in addition to the anchor corner, and a separate mobile placement (corner + offsets, each field inheriting from desktop when left empty). The widget applies placement via CSS variables and switches automatically at the 480px breakpoint. * Booking: "Paiement sur place" payment mode. When enabled in POS Limitless (Config > Informations générales > Paiement), a fourth payment option appears in the confirmation funnel showing the full amount. On submit, a confirmation popup (center-configurable wording and message) warns the customer, then the reservation is validated with 0 paid (status 'onsite', light-blue in the POS planning until cashed in at the register). Confirmation email is sent as usual. * Booking: the extras/packs card in the V1 confirmation view is now hidden when the center has no online products (previously rendered as an empty card), and the order summary no longer stacks empty separator lines when there are no discounts or extras. = 2.6.22 = * Client portal: magic-link auto-login. When a customer opens the client portal from the link in their photo email, the page now reads a one-time login token (`?lt=`) from the URL, exchanges it for a session and lands them straight on their dashboard — no email + phone + code to type. This fixes the mobile in-app browser issue (Gmail/Outlook WebView on Android) where the verification code, sent by email, was unreachable without leaving the page. The classic email + phone + code login is unchanged for direct/web visits. * Client portal: in-app browser banner. When the portal is opened inside a mail/social app WebView, a banner invites the visitor to open the page in their real browser (Chrome, Safari…) with a one-tap "copy link" button. = 2.6.20 = * Confirmation: new "Blocs personnalisés" section in WordPress admin > PosLimitless > Confirmation appearance. Admins can configure up to 3 free-form rich-text blocks, each placeable independently at 4 possible positions in the confirmation funnel (before Vos coordonnées / before Envie d'aller plus loin / before Mode de paiement / before Finalisation). Each block has its own enable toggle, position selector, WYSIWYG content (bold, italic, underline, color, font size, alignment, lists, hyperlink, removeformat), optional background color, and optional image picked from the WP media library. Disabled blocks aren't rendered. The richtext sanitization allowlist was extended server-side with `

`, `

` (text-align) and `` (src whitelisted to http(s)/relative — blocks data:/javascript:), and the client `` parser was upgraded to map `font-size` (px/em/rem/%/pt, plus CSS named sizes) and `text-align` to safe React style props. Block cards inherit each view's native card style (Vue 1 → 5) so they visually blend with the rest of the funnel. = 2.6.19 = * Chat: the "displayed name" introduced in 2.6.18 is now a WordPress-local option instead of being stored in the POS Limitless backend. Changing it no longer requires a backend deployment — set it in PosLimitless > Configuration > Chat en direct > "Nom affiché dans le widget" (right next to the position selector), save, reload. The value is passed to the chat widget via wp_localize_script and overrides the center name on the fly. Backend-side `widgetTitle` field was removed. = 2.6.18 = * Chat: new "displayed name" field in WordPress admin > PosLimitless > Configuration > Chat en direct > Apparence. Lets the admin override the name shown in the chat widget header with a commercial / brand name (e.g. "Escape Room Paris") instead of the internal center name ("test"). Left empty, the widget falls back to the center name as before. 60-char max. = 2.6.17 = * Chat: new "email required" toggle in WordPress admin > PosLimitless > Configuration > Chat en direct. When enabled, the pre-chat email field is marked "(obligatoire)" instead of "(optionnel)", carries the HTML5 `required` attribute, and the widget validates the email format client-side before opening the conversation. When disabled (default), the email stays optional. The setting is pushed to and read from the backend chat config, so it applies uniformly across all entry points. = 2.6.16 = * Chat: fix view-switching regression introduced in 2.6.12. The `display: flex !important` rule added to the pre-chat container was beating the inline `style.display = "none"` that the widget's `showView()` sets when transitioning to the active conversation view. Result: after clicking "Démarrer la conversation", the pre-chat form stayed visible on top of the messages list and input zone — they all rendered stacked together. Removed the `!important` on `display` (kept it on `flex-direction` and `flex`) so JS can still toggle the view. = 2.6.15 = * Chat: form fields, welcome bubble, message list and footer were sticking to the left and right edges of the chat window because the widget's own internal `* { padding: 0 }` reset (specificity 1,0,1) was beating the per-container padding rules (specificity 0,1,0). All container paddings (header, welcome, pre-chat form, messages list, input zone, footer, individual message bubbles) are now forced with `!important` so they survive the cascade and the content gets proper side breathing room. = 2.6.14 = * Confirmation: the 3 payment-mode subtitles (configured per site in WordPress admin > PosLimitless > Confirmation appearance) are now rich-text. Plain `