Plugin Directory

Changeset 3458979


Ignore:
Timestamp:
02/11/2026 01:13:29 PM (7 weeks ago)
Author:
appwavedev
Message:

Release 1.0.23: Fix embedded mode for shortcode (set embedded/embeddedSize/embeddedPlacement via JS so Stencil applies embedded layout)

Location:
bettercx-widget/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • bettercx-widget/trunk/bettercx-widget.php

    r3458971 r3458979  
    44 * Plugin URI: https://wordpress.org/plugins/bettercx-widget/
    55 * Description: Professional AI-powered chat widget for BetterCX platform. Seamlessly integrate intelligent customer support into any website with full WordPress compatibility. Fully functional out of the box with no trial limitations.
    6  * Version: 1.0.22
     6 * Version: 1.0.23
    77 * Author: BetterCX
    88 * Author URI: https://bettercx.ai
     
    1616 *
    1717 * @package BetterCX_Widget
    18  * @version 1.0.22
     18 * @version 1.0.23
    1919 * @author BetterCX
    2020 * @license GPLv2+
     
    3737
    3838// Define plugin constants
    39 define('BETTERCX_WIDGET_VERSION', '1.0.22');
     39define('BETTERCX_WIDGET_VERSION', '1.0.23');
    4040define('BETTERCX_WIDGET_PLUGIN_FILE', __FILE__);
    4141define('BETTERCX_WIDGET_PLUGIN_DIR', plugin_dir_path(__FILE__));
     
    848848        $event_script = "
    849849document.addEventListener('DOMContentLoaded', function() {
    850     const widget = document.querySelector('bettercx-widget');
    851     if (widget && window.bettercxWidgetConfig) {
    852         // Set widget attributes from config if not already set
    853         const config = window.bettercxWidgetConfig;
    854 
    855         if (config.embeddedSize && !widget.hasAttribute('embedded-size')) {
    856             widget.setAttribute('embedded-size', config.embeddedSize);
    857         }
    858 
    859         if (config.embeddedPlacement && !widget.hasAttribute('embedded-placement')) {
    860             widget.setAttribute('embedded-placement', config.embeddedPlacement);
    861         }
    862 
    863         widget.addEventListener('widgetEvent', function(e) {
    864             // Trigger custom WordPress action
    865             if (typeof jQuery !== 'undefined') {
    866                 jQuery(document).trigger('bettercx:widgetEvent', [e.detail]);
     850    var widget = document.querySelector('bettercx-widget');
     851    if (!widget) return;
     852    customElements.whenDefined('bettercx-widget').then(function() {
     853        // Stencil does not coerce HTML attribute embedded=\"true\" to boolean; set properties explicitly.
     854        if (widget.getAttribute('embedded') === 'true') {
     855            widget.embedded = true;
     856            var size = widget.getAttribute('embedded-size');
     857            if (size) widget.embeddedSize = size;
     858            var placement = widget.getAttribute('embedded-placement');
     859            if (placement) widget.embeddedPlacement = placement;
     860        }
     861        if (window.bettercxWidgetConfig) {
     862            var config = window.bettercxWidgetConfig;
     863            if (config.embeddedSize && !widget.hasAttribute('embedded-size')) {
     864                widget.setAttribute('embedded-size', config.embeddedSize);
    867865            }
    868 
    869             // Trigger global function if defined
    870             if (typeof window.BetterCXWidgetEvent === 'function') {
    871                 window.BetterCXWidgetEvent(e.detail);
     866            if (config.embeddedPlacement && !widget.hasAttribute('embedded-placement')) {
     867                widget.setAttribute('embedded-placement', config.embeddedPlacement);
    872868            }
    873 
    874             // Analytics tracking if enabled
    875             if (config.enableAnalytics) {
    876                 if (typeof gtag !== 'undefined') {
     869            widget.addEventListener('widgetEvent', function(e) {
     870                if (typeof jQuery !== 'undefined') {
     871                    jQuery(document).trigger('bettercx:widgetEvent', [e.detail]);
     872                }
     873                if (typeof window.BetterCXWidgetEvent === 'function') {
     874                    window.BetterCXWidgetEvent(e.detail);
     875                }
     876                if (config.enableAnalytics && typeof gtag !== 'undefined') {
    877877                    gtag('event', 'bettercx_widget_event', {
    878878                        event_type: e.detail.type,
     
    880880                    });
    881881                }
    882             }
    883         });
    884     }
     882            });
     883        }
     884    });
    885885});
    886886        ";
  • bettercx-widget/trunk/readme.txt

    r3458971 r3458979  
    55Tested up to: 6.8
    66Requires PHP: 7.4
    7 Stable tag: 1.0.22
     7Stable tag: 1.0.23
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    248248== Changelog ==
    249249
     250= 1.0.23 =
     251* Fixed embedded mode when using shortcode: widget now correctly displays in embedded layout (inline) instead of floating in the corner when shortcode has embedded="true"
     252* Stencil does not coerce HTML attribute embedded="true" to boolean; plugin now sets embedded, embeddedSize, and embeddedPlacement as JavaScript properties after component is defined so embedded shortcode works reliably
     253
    250254= 1.0.22 =
    251255* Fixed "Enable Widget" checkbox: unchecked state now correctly saves and disables the global widget (previously reverted to checked)
     
    407411== Upgrade Notice ==
    408412
     413= 1.0.23 =
     414Bugfix: Embedded mode now works when using shortcode with embedded="true"; widget displays inline instead of floating in the corner.
     415
    409416= 1.0.22 =
    410417Update: "Enable Widget" checkbox now saves correctly when unchecked. Shortcode-only and Elementor pages work properly (no duplicate widget, scripts load). Test Connection button removed from admin.
Note: See TracChangeset for help on using the changeset viewer.