Plugin Directory

Changeset 3431172


Ignore:
Timestamp:
01/02/2026 05:31:17 PM (3 months ago)
Author:
vuelve
Message:

Update to version 1.0.1 - Added marketing consent checkbox logic.

Location:
vuelve
Files:
62 added
6 edited

Legend:

Unmodified
Added
Removed
  • vuelve/trunk/readme.txt

    r3431081 r3431172  
    33Tags: woocommerce, whatsapp, abandoned cart, automation, campaigns
    44Requires at least: 5.8
    5 Tested up to: 6.9
     5Tested up to: 6.7
    66Requires PHP: 7.4
    7 Stable tag: 1.0.0
     7Stable tag: 1.0.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    8585= 1.0.0 =
    8686Initial stable release. Update required for future compatibility and improvements.
     87
     88== Changelog ==
     89
     90= 1.0.1 =
     91* Added new controller over marketing consent checkbox.
  • vuelve/trunk/src/Admin/VuelveAdmin.php

    r3431081 r3431172  
    5050    public function vuelve_render_admin_page() {
    5151        $nonce = wp_create_nonce('vuelve_save_managers');
     52        $prechecked = get_option('vuelve_consent_default_checked', '0');
    5253        ?>
    5354        <div class="vlv-admin">
     
    146147                                <input type="text" value="<?php echo esc_html($this->marketingConsentLabel); ?>" id="marketing-consent-label" onkeyup="VuelveAdmin.clearError('marketing-consent-label')" />
    147148                            </div>
     149                            <div class="field field-row">
     150                                <label for="vuelve_consent_default_checked">
     151                                    <input name="vuelve_consent_default_checked" type="checkbox" id="vuelve_consent_default_checked" value="1" <?php checked('1', $prechecked); ?> />
     152                                    Pre-check the consent box at checkout
     153                                </label>
     154                                <p class="checkbox-note">
     155                                    Opt-in requirements vary by country. Please ensure that pre-selecting this box aligns with the anti-spam laws in your region before enabling.
     156                                </p>
     157                            </div>
    148158                            <div class="settings-buttons">
    149159                                <button id="submit-settings" class="primary-button" onClick="VuelveAdmin.submitSettings()">Save Settings</button>
     
    210220        add_action( 'admin_menu', [$this, 'vuelve_register_admin_page'] );
    211221        add_action( 'admin_enqueue_scripts', [$this, 'vuelve_admin_assets'] );
     222        add_action('admin_init', function() {
     223            register_setting('vuelve_settings_group', 'vuelve_consent_default_checked');
     224        });
    212225
    213226        add_action('wp_ajax_vuelve_save_settings', function() {
     
    225238                    : '';
    226239
    227             if ( strlen( $raw_label ) < 5 ) {
    228                 wp_send_json_error( array( 'message' => 'Label too short' ), 400 );
    229             }
     240            $is_checked = ( isset($_POST['consentDefault']) && ( $_POST['consentDefault'] === 'true' || $_POST['consentDefault'] === '1' ) );
     241            $consent_default_val = $is_checked ? '1' : '0';
     242
     243//            if ( strlen( $raw_label ) < 5 ) {
     244//                wp_send_json_error( array( 'message' => 'Label too short' ), 400 );
     245//            }
    230246
    231247            update_option( 'vuelve_marketing_consent_label', $raw_label );
     248            update_option( 'vuelve_consent_default_checked', $consent_default_val );
     249
    232250            wp_send_json_success();
    233251        });
  • vuelve/trunk/src/Admin/assets/admin.css

    r3431081 r3431172  
    507507}
    508508
     509.vlv-admin input#vuelve_consent_default_checked {
     510    width: 17px;
     511    height: 16px;
     512}
     513
     514.vlv-admin .checkbox-note {
     515    color: #959595;
     516    max-width: 600px;
     517    margin-top: 2px;
     518    font-size: 11px;
     519    font-family: 'quicksand-medium';
     520    margin-left: 24px;
     521}
     522
    509523/* Target ONLY the Vuelve menu item */
    510524#adminmenu .toplevel_page_vuelve-admin .wp-menu-image {
  • vuelve/trunk/src/Admin/assets/admin.js

    r3431081 r3431172  
    4343        errorMessage.classList.add('shown');
    4444    } else {
    45         console.log("managers: ", managers);
    4645        sendManagers(managers);
    4746    }
     
    128127function submitVuelveSettings() {
    129128    const marketingConsentLabelInput = document.querySelector('#marketing-consent-label');
     129    const marketingConsentDefaultChecked = document.querySelector('#vuelve_consent_default_checked');
    130130    const marketingConsentLabel = marketingConsentLabelInput?.value;
     131    const marketingConsentDefault = marketingConsentDefaultChecked.checked;
    131132    let hasError = false;
    132133
    133     if (marketingConsentLabel.length < 5) {
    134         hasError = 1;
    135         setError(`marketing-consent-label`);
    136     }
     134    // if (marketingConsentLabel.length < 5) {
     135    //     hasError = 1;
     136    //     setError(`marketing-consent-label`);
     137    // }
    137138
    138139    if (hasError) {
     
    140141        errorMessage.classList.add('shown');
    141142    } else {
    142         console.log("marketingconsentLabel: ", marketingConsentLabel);
    143         sendVuelveSettings(marketingConsentLabel);
     143        sendVuelveSettings(marketingConsentLabel, marketingConsentDefault);
    144144    }
    145145}
    146146
    147 async function sendVuelveSettings(consentLabel) {
     147async function sendVuelveSettings(consentLabel, consentDefault) {
    148148    const fd = new FormData();
    149149    const submitBtn = document.getElementById('submit-settings');
     
    151151    fd.append('security', VUELVE_ADMIN.nonceSettings);
    152152    fd.append('consentLabel', consentLabel);
     153    fd.append('consentDefault', consentDefault);
    153154    if(submitBtn) submitBtn.disabled = true;
    154155    try {
  • vuelve/trunk/src/ConsentCheckbox/ConsentCheckbox.php

    r3431081 r3431172  
    1010
    1111    public $consentText = 'I agree to receive updates and offers via SMS and Whatsapp';
     12
     13    private function get_merchant_default() {
     14        return get_option('vuelve_consent_default_checked', '0'); // Defaults to 0 (unchecked)
     15    }
    1216
    1317    public function __construct() {
     
    1620                'I agree to receive updates and offers via SMS and WhatsApp'
    1721        );
     22        if($this->consentText == '') {
     23            $this->consentText = 'I agree to receive updates and offers via SMS and WhatsApp';
     24        }
    1825
    1926        // Classic checkout
     
    103110            $isNull = is_null( WC()->session->get('vuelve_marketing_consent', null) );
    104111            if($isNull) {
    105 //                error_log("marketing consent change 2: 1");
    106                 WC()->session->set('vuelve_marketing_consent', 1);
     112                WC()->session->set('vuelve_marketing_consent', $this->get_merchant_default());
    107113            } else {
    108114//                error_log("marketing consent change 3");
     
    151157            $isNull = is_null( WC()->session->get('vuelve_marketing_consent', null) );
    152158            if($isNull) {
    153                 $stored = 1;
     159                $stored = $this->get_merchant_default();
    154160            } else {
    155161                $stored = WC()->session->get('vuelve_marketing_consent');
     
    184190        if ( is_null($stored) ) {
    185191            // No prior value → default to checked
    186             return '1';
     192            return ($this->get_merchant_default() === '1') ? '1' : '';
    187193        }
    188194        return ((int) $stored) ? '1' : '';
     
    214220
    215221            if ($init === null) {
    216                 WC()->session->set('vuelve_marketing_consent', 1);
    217                 $init = 1;
     222                $default = $this->get_merchant_default();
     223                WC()->session->set('vuelve_marketing_consent', $default);
     224                $init = $default;
    218225            }
    219226//            error_log("init: ", $init);
     
    239246    public function render_cart_checkbox() {
    240247        if ( ! function_exists('WC') || ! WC()->session ) return;
    241         $checked = (int) WC()->session->get('vuelve_marketing_consent', 1);
     248        $checked = (int) WC()->session->get('vuelve_marketing_consent', $this->get_merchant_default());
    242249        ?>
    243250        <div class="vuelve-consent-cart">
  • vuelve/trunk/vuelve.php

    r3431081 r3431172  
    33 * Plugin Name: Vuelve
    44 * Description: Adds Vuelve abandoned cart recovery and WhatsApp cart restoration to WooCommerce.
    5  * Version: 1.0.0
     5 * Version: 1.0.1
    66 * Author: Vuelve
    77 * Author URI: https://vuelve.co
Note: See TracChangeset for help on using the changeset viewer.