Plugin Directory

Changeset 3488716


Ignore:
Timestamp:
03/23/2026 08:55:09 AM (12 days ago)
Author:
Narinder singh
Message:

Update to version 2.10.1 from GitHub

Location:
cryptocurrency-price-ticker-widget
Files:
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • cryptocurrency-price-ticker-widget/tags/2.10.1/admin/addon-dashboard-page/addon-dashboard-page.php

    r3488638 r3488716  
    239239
    240240        /**
     241         * Whether WooCommerce is active (for add-ons that require it to activate).
     242         *
     243         * @return bool
     244         */
     245        private static function ccew_is_woocommerce_active() {
     246            if ( ! function_exists( 'is_plugin_active' ) ) {
     247                require_once ABSPATH . 'wp-admin/includes/plugin.php';
     248            }
     249            return is_plugin_active( 'woocommerce/woocommerce.php' );
     250        }
     251
     252        /**
     253         * Whether activation is allowed for this slug (WooCommerce gate for payment add-ons).
     254         *
     255         * @param string $slug Plugin slug.
     256         * @return bool
     257         */
     258        private static function ccew_is_activation_allowed_for_slug( $slug ) {
     259            if ( ! in_array( $slug, self::$woocommerce_dependent_slugs, true ) ) {
     260                return true;
     261            }
     262            return self::ccew_is_woocommerce_active();
     263        }
     264
     265        /**
    241266         * Handle AJAX: install plugin via WordPress core or activate if already installed (including Pro).
    242267         */
     
    272297                    )
    273298                );
    274             }
    275 
    276             if ( in_array( $slug, self::$woocommerce_dependent_slugs, true ) ) {
    277                 if ( ! function_exists( 'is_plugin_active' ) ) {
    278                     require_once ABSPATH . 'wp-admin/includes/plugin.php';
    279                 }
    280                 if ( ! is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
    281                     wp_send_json_error(
    282                         array(
    283                             'slug'         => $slug,
    284                             'errorCode'    => 'woocommerce_required',
    285                             'errorMessage' => __( 'WooCommerce must be installed and active before you can install or activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
    286                         )
    287                     );
    288                 }
    289299            }
    290300
     
    352362                    );
    353363                }
     364                if ( ! self::ccew_is_activation_allowed_for_slug( $slug ) ) {
     365                    wp_send_json_error(
     366                        array(
     367                            'slug'         => $slug,
     368                            'errorCode'    => 'woocommerce_required',
     369                            'errorMessage' => __( 'WooCommerce must be installed and active before you can activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
     370                        )
     371                    );
     372                }
    354373                // phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce checked above.
    355374                $pagenow      = isset( $_POST['pagenow'] ) ? sanitize_key( wp_unslash( $_POST['pagenow'] ) ) : '';
     
    409428                    $pagenow       = isset( $_POST['pagenow'] ) ? sanitize_key( wp_unslash( $_POST['pagenow'] ) ) : '';
    410429                    $network_wide  = is_multisite() && 'import' !== $pagenow;
    411                     if ( current_user_can( 'activate_plugin', $install_status['file'] ) ) {
     430                    if ( current_user_can( 'activate_plugin', $install_status['file'] ) && self::ccew_is_activation_allowed_for_slug( $slug ) ) {
    412431                        $activation_result = activate_plugin( $install_status['file'], '', $network_wide );
    413432                        if ( is_wp_error( $activation_result ) ) {
     
    417436                        }
    418437                        $status['activated'] = true;
     438                    } elseif ( current_user_can( 'activate_plugin', $install_status['file'] ) && ! self::ccew_is_activation_allowed_for_slug( $slug ) ) {
     439                        $status['activated'] = false;
    419440                    }
    420441                    wp_send_json_success( $status );
     
    446467
    447468            if ( current_user_can( 'activate_plugin', $install_status['file'] ) && is_plugin_inactive( $install_status['file'] ) ) {
    448                 $activation_result = activate_plugin( $install_status['file'], '', $network_wide );
    449                 if ( is_wp_error( $activation_result ) ) {
    450                     $status['errorCode']    = $activation_result->get_error_code();
    451                     $status['errorMessage'] = $activation_result->get_error_message();
    452                     wp_send_json_error( $status );
    453                 }
    454                 $status['activated'] = true;
     469                if ( self::ccew_is_activation_allowed_for_slug( $slug ) ) {
     470                    $activation_result = activate_plugin( $install_status['file'], '', $network_wide );
     471                    if ( is_wp_error( $activation_result ) ) {
     472                        $status['errorCode']    = $activation_result->get_error_code();
     473                        $status['errorMessage'] = $activation_result->get_error_message();
     474                        wp_send_json_error( $status );
     475                    }
     476                    $status['activated'] = true;
     477                } else {
     478                    $status['activated'] = false;
     479                }
    455480            }
    456481            wp_send_json_success( $status );
     
    860885                        <div class="<?php echo esc_attr( $prefix ); ?>-card-footer">
    861886                            <?php
    862                             $needs_activation = ! empty( $plugin['needs_activation'] ) && ! empty( $plugin['plugin_basename'] );
     887                            $needs_activation = ! empty( $plugin['needs_activation'] );
    863888                            $install_nonce    = wp_create_nonce( 'ccew-plugins-download' );
     889                            // Markup hint for JS: block Activate AJAX when WooCommerce is off (no disabled attr — early return only).
     890                            $ccew_block_wc_activate = $needs_activation
     891                                && in_array( $plugin_slug, self::$woocommerce_dependent_slugs, true )
     892                                && ! self::ccew_is_woocommerce_active();
    864893                            ?>
    865894                            <button type="button"
    866895                                class="button <?php echo esc_attr( $prefix ); ?>-button-primary <?php echo esc_attr( $prefix ); ?>-install-plugin <?php echo $needs_activation ? esc_attr( $prefix ) . '-btn-activate' : esc_attr( $prefix ) . '-btn-install'; ?>"
    867896                                data-slug="<?php echo esc_attr( $plugin_slug ); ?>"
    868                                 data-nonce="<?php echo esc_attr( $install_nonce ); ?>">
     897                                data-nonce="<?php echo esc_attr( $install_nonce ); ?>"
     898                                <?php echo $ccew_block_wc_activate ? ' data-ccew-block-wc-activate="1"' : ''; ?>>
    869899                                <?php echo $needs_activation ? esc_html__( 'Activate Now', 'cryptocurrency-widgets-for-elementor' ) : esc_html__( 'Install Now', 'cryptocurrency-widgets-for-elementor' ); ?>
    870900                            </button>
     
    919949                        'woocommerce_active'       => function_exists( 'is_plugin_active' ) && is_plugin_active( 'woocommerce/woocommerce.php' ),
    920950                        'woocommerce_slugs'        => array_values( self::$woocommerce_dependent_slugs ),
    921                         'woocommerce_required_msg' => __( 'WooCommerce must be installed and active before you can install or activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
     951                        'woocommerce_required_msg'   => __( 'WooCommerce must be installed and active before you can activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
     952                        'installed_pending_wc_label' => __( 'Installed!', 'cryptocurrency-widgets-for-elementor' ),
    922953                    )
    923954                );
  • cryptocurrency-price-ticker-widget/tags/2.10.1/admin/addon-dashboard-page/assets/js/script.js

    r3488638 r3488716  
    1919            return;
    2020        }
    21         var slug = $btn.data('slug') || $btn.attr('data-plugin-slug');
    22         var nonce = (typeof cp_events !== 'undefined' && cp_events.install_nonce) ? cp_events.install_nonce : $btn.data('nonce') || $btn.attr('data-action-nonce');
     21        // Use attr() so slug always matches the DOM (jQuery .data() can cache / coerce).
     22        var slug = $btn.attr('data-slug') || $btn.attr('data-plugin-slug') || $btn.data('slug');
     23        var nonce = (typeof cp_events !== 'undefined' && cp_events.install_nonce) ? cp_events.install_nonce : $btn.attr('data-nonce') || $btn.data('nonce') || $btn.attr('data-action-nonce');
    2324        var action = (typeof cp_events !== 'undefined' && cp_events.install_action) ? cp_events.install_action : 'ccew_dashboard_install_plugin';
    2425
    2526        if (!slug || !nonce) {
     27            return;
     28        }
     29
     30        // Server-rendered: no AJAX, no "Activating…" / "Installed!" when WooCommerce is inactive (reliable vs cp_events/class checks).
     31        if ($btn.attr('data-ccew-block-wc-activate') === '1') {
     32            return;
     33        }
     34
     35        // Same pattern as Timeline + Divi: allow "Install Now"; block "Activate Now" when WooCommerce is inactive.
     36        var isActivateBtn = $btn.hasClass('ccew-btn-activate') || $btn.is('[class*="-btn-activate"]');
     37        if (isActivateBtn && typeof cp_events !== 'undefined' && cp_events.woocommerce_active !== true && Array.isArray(cp_events.woocommerce_slugs) && cp_events.woocommerce_slugs.indexOf(slug) !== -1) {
    2638            return;
    2739        }
     
    7890            }
    7991            if (response && response.success) {
     92                var d = response.data || {};
     93                // Installed but not auto-activated (e.g. WooCommerce-dependent add-on without Woo active).
     94                if (d.activated === false) {
     95                    $btn.prop('disabled', false).removeClass('ccew-btn-processing');
     96                    var installedLabel = (typeof cp_events !== 'undefined' && cp_events.installed_pending_wc_label) ? cp_events.installed_pending_wc_label : 'Installed!';
     97                    $btn.text(installedLabel);
     98                    requestAnimationFrame(function () {
     99                        setTimeout(function () { window.location.reload(); }, 1200);
     100                    });
     101                    return;
     102                }
    80103                $btn.prop('disabled', false).removeClass('ccew-btn-processing');
    81104                $btn.text('Activated Successfully!');
     
    95118            enableAllBtns();
    96119            $btn.text($btn.hasClass('ccew-btn-activate') ? 'Activate Now' : 'Install Now');
    97             // WooCommerce dependency: no alert — keep this button disabled / unclickable.
    98120            if (errCode === 'woocommerce_required') {
    99                 $btn.prop('disabled', true).addClass('ccew-btn-dependency-disabled');
    100                 if (typeof cp_events !== 'undefined' && cp_events.woocommerce_required_msg) {
    101                     $btn.attr('title', cp_events.woocommerce_required_msg);
    102                 }
    103121                return;
    104122            }
     
    125143            }
    126144            if (failErrCode === 'woocommerce_required') {
    127                 $btn.prop('disabled', true).addClass('ccew-btn-dependency-disabled');
    128                 if (typeof cp_events !== 'undefined' && cp_events.woocommerce_required_msg) {
    129                     $btn.attr('title', cp_events.woocommerce_required_msg);
    130                 }
    131145                return;
    132146            }
     
    147161        var ajaxUrl = (typeof cp_events !== 'undefined' && cp_events.ajax_url) ? cp_events.ajax_url : '';
    148162        if (!pluginSlug || !nonce || !ajaxUrl) {
     163            return;
     164        }
     165        if (typeof cp_events !== 'undefined' && !cp_events.woocommerce_active && cp_events.woocommerce_slugs && cp_events.woocommerce_slugs.indexOf(pluginSlug) !== -1) {
    149166            return;
    150167        }
     
    183200        }
    184201    });
    185 
    186     // Keep Install/Activate disabled when WooCommerce is not active (dependency plugins).
    187     if (typeof cp_events !== 'undefined' && !cp_events.woocommerce_active && cp_events.woocommerce_slugs && cp_events.woocommerce_slugs.length) {
    188         cp_events.woocommerce_slugs.forEach(function (depSlug) {
    189             $('button[data-slug="' + depSlug + '"]').each(function () {
    190                 var $b = $(this);
    191                 if ($b.is('.ccew-install-plugin, [class*="-install-plugin"]')) {
    192                     $b.prop('disabled', true).addClass('ccew-btn-dependency-disabled').attr('title', cp_events.woocommerce_required_msg || '');
    193                 }
    194             });
    195         });
    196     }
    197202});
  • cryptocurrency-price-ticker-widget/tags/2.10.1/cryptocurrency-price-ticker-widget.php

    r3488638 r3488716  
    66 * Author: Cool Plugins
    77 * Author URI: https://coolplugins.net/?utm_source=ccw_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugins_list
    8  * Version: 2.10.0
     8 * Version: 2.10.1
    99 * License: GPL3
    1010 * Text Domain: cryptocurrency-price-ticker-widget
     
    2222
    2323// Define constants for later use
    24 define('CCPWF_VERSION', '2.10.0');
     24define('CCPWF_VERSION', '2.10.1');
    2525define('CCPWF_FILE', __FILE__);
    2626define('CCPWF_DIR', plugin_dir_path(CCPWF_FILE));
  • cryptocurrency-price-ticker-widget/tags/2.10.1/readme.txt

    r3488638 r3488716  
    55Tested up to: 6.9
    66Requires PHP:7.2
    7 Stable tag: 2.10.0
     7Stable tag: 2.10.1
    88License: GPL3
    99License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    184184== Changelog ==
    185185
     186= Version 2.10.1| 23 March 2026 =
     187*  Fixed: Wrong plugin slug.
     188
    186189= Version 2.10.0| 23 March 2026 =
    187190* Improved: Improved dashboard design and usability.
  • cryptocurrency-price-ticker-widget/trunk/admin/addon-dashboard-page/addon-dashboard-page.php

    r3488638 r3488716  
    239239
    240240        /**
     241         * Whether WooCommerce is active (for add-ons that require it to activate).
     242         *
     243         * @return bool
     244         */
     245        private static function ccew_is_woocommerce_active() {
     246            if ( ! function_exists( 'is_plugin_active' ) ) {
     247                require_once ABSPATH . 'wp-admin/includes/plugin.php';
     248            }
     249            return is_plugin_active( 'woocommerce/woocommerce.php' );
     250        }
     251
     252        /**
     253         * Whether activation is allowed for this slug (WooCommerce gate for payment add-ons).
     254         *
     255         * @param string $slug Plugin slug.
     256         * @return bool
     257         */
     258        private static function ccew_is_activation_allowed_for_slug( $slug ) {
     259            if ( ! in_array( $slug, self::$woocommerce_dependent_slugs, true ) ) {
     260                return true;
     261            }
     262            return self::ccew_is_woocommerce_active();
     263        }
     264
     265        /**
    241266         * Handle AJAX: install plugin via WordPress core or activate if already installed (including Pro).
    242267         */
     
    272297                    )
    273298                );
    274             }
    275 
    276             if ( in_array( $slug, self::$woocommerce_dependent_slugs, true ) ) {
    277                 if ( ! function_exists( 'is_plugin_active' ) ) {
    278                     require_once ABSPATH . 'wp-admin/includes/plugin.php';
    279                 }
    280                 if ( ! is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
    281                     wp_send_json_error(
    282                         array(
    283                             'slug'         => $slug,
    284                             'errorCode'    => 'woocommerce_required',
    285                             'errorMessage' => __( 'WooCommerce must be installed and active before you can install or activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
    286                         )
    287                     );
    288                 }
    289299            }
    290300
     
    352362                    );
    353363                }
     364                if ( ! self::ccew_is_activation_allowed_for_slug( $slug ) ) {
     365                    wp_send_json_error(
     366                        array(
     367                            'slug'         => $slug,
     368                            'errorCode'    => 'woocommerce_required',
     369                            'errorMessage' => __( 'WooCommerce must be installed and active before you can activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
     370                        )
     371                    );
     372                }
    354373                // phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce checked above.
    355374                $pagenow      = isset( $_POST['pagenow'] ) ? sanitize_key( wp_unslash( $_POST['pagenow'] ) ) : '';
     
    409428                    $pagenow       = isset( $_POST['pagenow'] ) ? sanitize_key( wp_unslash( $_POST['pagenow'] ) ) : '';
    410429                    $network_wide  = is_multisite() && 'import' !== $pagenow;
    411                     if ( current_user_can( 'activate_plugin', $install_status['file'] ) ) {
     430                    if ( current_user_can( 'activate_plugin', $install_status['file'] ) && self::ccew_is_activation_allowed_for_slug( $slug ) ) {
    412431                        $activation_result = activate_plugin( $install_status['file'], '', $network_wide );
    413432                        if ( is_wp_error( $activation_result ) ) {
     
    417436                        }
    418437                        $status['activated'] = true;
     438                    } elseif ( current_user_can( 'activate_plugin', $install_status['file'] ) && ! self::ccew_is_activation_allowed_for_slug( $slug ) ) {
     439                        $status['activated'] = false;
    419440                    }
    420441                    wp_send_json_success( $status );
     
    446467
    447468            if ( current_user_can( 'activate_plugin', $install_status['file'] ) && is_plugin_inactive( $install_status['file'] ) ) {
    448                 $activation_result = activate_plugin( $install_status['file'], '', $network_wide );
    449                 if ( is_wp_error( $activation_result ) ) {
    450                     $status['errorCode']    = $activation_result->get_error_code();
    451                     $status['errorMessage'] = $activation_result->get_error_message();
    452                     wp_send_json_error( $status );
    453                 }
    454                 $status['activated'] = true;
     469                if ( self::ccew_is_activation_allowed_for_slug( $slug ) ) {
     470                    $activation_result = activate_plugin( $install_status['file'], '', $network_wide );
     471                    if ( is_wp_error( $activation_result ) ) {
     472                        $status['errorCode']    = $activation_result->get_error_code();
     473                        $status['errorMessage'] = $activation_result->get_error_message();
     474                        wp_send_json_error( $status );
     475                    }
     476                    $status['activated'] = true;
     477                } else {
     478                    $status['activated'] = false;
     479                }
    455480            }
    456481            wp_send_json_success( $status );
     
    860885                        <div class="<?php echo esc_attr( $prefix ); ?>-card-footer">
    861886                            <?php
    862                             $needs_activation = ! empty( $plugin['needs_activation'] ) && ! empty( $plugin['plugin_basename'] );
     887                            $needs_activation = ! empty( $plugin['needs_activation'] );
    863888                            $install_nonce    = wp_create_nonce( 'ccew-plugins-download' );
     889                            // Markup hint for JS: block Activate AJAX when WooCommerce is off (no disabled attr — early return only).
     890                            $ccew_block_wc_activate = $needs_activation
     891                                && in_array( $plugin_slug, self::$woocommerce_dependent_slugs, true )
     892                                && ! self::ccew_is_woocommerce_active();
    864893                            ?>
    865894                            <button type="button"
    866895                                class="button <?php echo esc_attr( $prefix ); ?>-button-primary <?php echo esc_attr( $prefix ); ?>-install-plugin <?php echo $needs_activation ? esc_attr( $prefix ) . '-btn-activate' : esc_attr( $prefix ) . '-btn-install'; ?>"
    867896                                data-slug="<?php echo esc_attr( $plugin_slug ); ?>"
    868                                 data-nonce="<?php echo esc_attr( $install_nonce ); ?>">
     897                                data-nonce="<?php echo esc_attr( $install_nonce ); ?>"
     898                                <?php echo $ccew_block_wc_activate ? ' data-ccew-block-wc-activate="1"' : ''; ?>>
    869899                                <?php echo $needs_activation ? esc_html__( 'Activate Now', 'cryptocurrency-widgets-for-elementor' ) : esc_html__( 'Install Now', 'cryptocurrency-widgets-for-elementor' ); ?>
    870900                            </button>
     
    919949                        'woocommerce_active'       => function_exists( 'is_plugin_active' ) && is_plugin_active( 'woocommerce/woocommerce.php' ),
    920950                        'woocommerce_slugs'        => array_values( self::$woocommerce_dependent_slugs ),
    921                         'woocommerce_required_msg' => __( 'WooCommerce must be installed and active before you can install or activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
     951                        'woocommerce_required_msg'   => __( 'WooCommerce must be installed and active before you can activate this plugin.', 'cryptocurrency-widgets-for-elementor' ),
     952                        'installed_pending_wc_label' => __( 'Installed!', 'cryptocurrency-widgets-for-elementor' ),
    922953                    )
    923954                );
  • cryptocurrency-price-ticker-widget/trunk/admin/addon-dashboard-page/assets/js/script.js

    r3488638 r3488716  
    1919            return;
    2020        }
    21         var slug = $btn.data('slug') || $btn.attr('data-plugin-slug');
    22         var nonce = (typeof cp_events !== 'undefined' && cp_events.install_nonce) ? cp_events.install_nonce : $btn.data('nonce') || $btn.attr('data-action-nonce');
     21        // Use attr() so slug always matches the DOM (jQuery .data() can cache / coerce).
     22        var slug = $btn.attr('data-slug') || $btn.attr('data-plugin-slug') || $btn.data('slug');
     23        var nonce = (typeof cp_events !== 'undefined' && cp_events.install_nonce) ? cp_events.install_nonce : $btn.attr('data-nonce') || $btn.data('nonce') || $btn.attr('data-action-nonce');
    2324        var action = (typeof cp_events !== 'undefined' && cp_events.install_action) ? cp_events.install_action : 'ccew_dashboard_install_plugin';
    2425
    2526        if (!slug || !nonce) {
     27            return;
     28        }
     29
     30        // Server-rendered: no AJAX, no "Activating…" / "Installed!" when WooCommerce is inactive (reliable vs cp_events/class checks).
     31        if ($btn.attr('data-ccew-block-wc-activate') === '1') {
     32            return;
     33        }
     34
     35        // Same pattern as Timeline + Divi: allow "Install Now"; block "Activate Now" when WooCommerce is inactive.
     36        var isActivateBtn = $btn.hasClass('ccew-btn-activate') || $btn.is('[class*="-btn-activate"]');
     37        if (isActivateBtn && typeof cp_events !== 'undefined' && cp_events.woocommerce_active !== true && Array.isArray(cp_events.woocommerce_slugs) && cp_events.woocommerce_slugs.indexOf(slug) !== -1) {
    2638            return;
    2739        }
     
    7890            }
    7991            if (response && response.success) {
     92                var d = response.data || {};
     93                // Installed but not auto-activated (e.g. WooCommerce-dependent add-on without Woo active).
     94                if (d.activated === false) {
     95                    $btn.prop('disabled', false).removeClass('ccew-btn-processing');
     96                    var installedLabel = (typeof cp_events !== 'undefined' && cp_events.installed_pending_wc_label) ? cp_events.installed_pending_wc_label : 'Installed!';
     97                    $btn.text(installedLabel);
     98                    requestAnimationFrame(function () {
     99                        setTimeout(function () { window.location.reload(); }, 1200);
     100                    });
     101                    return;
     102                }
    80103                $btn.prop('disabled', false).removeClass('ccew-btn-processing');
    81104                $btn.text('Activated Successfully!');
     
    95118            enableAllBtns();
    96119            $btn.text($btn.hasClass('ccew-btn-activate') ? 'Activate Now' : 'Install Now');
    97             // WooCommerce dependency: no alert — keep this button disabled / unclickable.
    98120            if (errCode === 'woocommerce_required') {
    99                 $btn.prop('disabled', true).addClass('ccew-btn-dependency-disabled');
    100                 if (typeof cp_events !== 'undefined' && cp_events.woocommerce_required_msg) {
    101                     $btn.attr('title', cp_events.woocommerce_required_msg);
    102                 }
    103121                return;
    104122            }
     
    125143            }
    126144            if (failErrCode === 'woocommerce_required') {
    127                 $btn.prop('disabled', true).addClass('ccew-btn-dependency-disabled');
    128                 if (typeof cp_events !== 'undefined' && cp_events.woocommerce_required_msg) {
    129                     $btn.attr('title', cp_events.woocommerce_required_msg);
    130                 }
    131145                return;
    132146            }
     
    147161        var ajaxUrl = (typeof cp_events !== 'undefined' && cp_events.ajax_url) ? cp_events.ajax_url : '';
    148162        if (!pluginSlug || !nonce || !ajaxUrl) {
     163            return;
     164        }
     165        if (typeof cp_events !== 'undefined' && !cp_events.woocommerce_active && cp_events.woocommerce_slugs && cp_events.woocommerce_slugs.indexOf(pluginSlug) !== -1) {
    149166            return;
    150167        }
     
    183200        }
    184201    });
    185 
    186     // Keep Install/Activate disabled when WooCommerce is not active (dependency plugins).
    187     if (typeof cp_events !== 'undefined' && !cp_events.woocommerce_active && cp_events.woocommerce_slugs && cp_events.woocommerce_slugs.length) {
    188         cp_events.woocommerce_slugs.forEach(function (depSlug) {
    189             $('button[data-slug="' + depSlug + '"]').each(function () {
    190                 var $b = $(this);
    191                 if ($b.is('.ccew-install-plugin, [class*="-install-plugin"]')) {
    192                     $b.prop('disabled', true).addClass('ccew-btn-dependency-disabled').attr('title', cp_events.woocommerce_required_msg || '');
    193                 }
    194             });
    195         });
    196     }
    197202});
  • cryptocurrency-price-ticker-widget/trunk/cryptocurrency-price-ticker-widget.php

    r3488638 r3488716  
    66 * Author: Cool Plugins
    77 * Author URI: https://coolplugins.net/?utm_source=ccw_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugins_list
    8  * Version: 2.10.0
     8 * Version: 2.10.1
    99 * License: GPL3
    1010 * Text Domain: cryptocurrency-price-ticker-widget
     
    2222
    2323// Define constants for later use
    24 define('CCPWF_VERSION', '2.10.0');
     24define('CCPWF_VERSION', '2.10.1');
    2525define('CCPWF_FILE', __FILE__);
    2626define('CCPWF_DIR', plugin_dir_path(CCPWF_FILE));
  • cryptocurrency-price-ticker-widget/trunk/readme.txt

    r3488638 r3488716  
    55Tested up to: 6.9
    66Requires PHP:7.2
    7 Stable tag: 2.10.0
     7Stable tag: 2.10.1
    88License: GPL3
    99License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    184184== Changelog ==
    185185
     186= Version 2.10.1| 23 March 2026 =
     187*  Fixed: Wrong plugin slug.
     188
    186189= Version 2.10.0| 23 March 2026 =
    187190* Improved: Improved dashboard design and usability.
Note: See TracChangeset for help on using the changeset viewer.