Plugin Directory

Changeset 3357629


Ignore:
Timestamp:
09/08/2025 07:10:26 AM (7 months ago)
Author:
md10
Message:

Fixed preloader to not show on page navigation and fixed modal not to show on page navigation

Location:
custom-smart-modal/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • custom-smart-modal/trunk/admin/settings.php

    r3357543 r3357629  
    425425        plugin_dir_url(dirname(__FILE__)) . 'css/admin-style.css',
    426426        array(),
    427         defined('CUSTSMMO_VERSION') ? CUSTSMMO_VERSION : '1.1'
     427        defined('CUSTSMMO_VERSION') ? CUSTSMMO_VERSION : '1.2'
    428428    );
    429429
     
    433433        plugin_dir_url(__FILE__) . 'js/admin-settings.js',
    434434        array('jquery'),
    435         defined('CUSTSMMO_VERSION') ? CUSTSMMO_VERSION : '1.1',
     435        defined('CUSTSMMO_VERSION') ? CUSTSMMO_VERSION : '1.2',
    436436        true
    437437    );
  • custom-smart-modal/trunk/custom-welcome-modal.php

    r3357543 r3357629  
    77 * Author: Martin Dimitrov
    88 * Author URI: https://martindimitrov.dk
    9  * Version: 1.1
     9 * Version: 1.2
    1010 * License: GPLv2 or later
    1111 * Text Domain: custom-smart-modal
     
    1717
    1818if ( ! defined( 'CUSTSMMO_VERSION' ) ) {
    19     define( 'CUSTSMMO_VERSION', '1.1' );
     19    define( 'CUSTSMMO_VERSION', '1.2' );
    2020}
    2121
     
    4848    $preloader_js = "(function() {
    4949        try {
     50            // Create a domain-specific localStorage key
     51            const domainKey = 'custsmmo_shown_before_' + window.location.hostname;
     52           
     53            // Generate a unique session identifier
     54            if (!sessionStorage.getItem('custsmmo_session_id')) {
     55                sessionStorage.setItem('custsmmo_session_id', Date.now().toString() + Math.random().toString(36).substring(2, 15));
     56            }
     57           
     58            // Get navigation information
     59            const navEntry = performance.getEntriesByType('navigation')[0];
     60            const navType = navEntry ? navEntry.type : '';
     61           
     62            // Reset localStorage on reload or new session (new window/tab)
     63            if (navType === 'reload' || !localStorage.getItem('custsmmo_current_session')) {
     64                localStorage.removeItem(domainKey);
     65                localStorage.setItem('custsmmo_current_session', sessionStorage.getItem('custsmmo_session_id'));
     66            } else if (localStorage.getItem('custsmmo_current_session') !== sessionStorage.getItem('custsmmo_session_id')) {
     67                // Different session ID means new window/tab
     68                localStorage.removeItem(domainKey);
     69                localStorage.setItem('custsmmo_current_session', sessionStorage.getItem('custsmmo_session_id'));
     70            }
     71           
     72            // Check for internal navigation flag
    5073            if (sessionStorage.getItem('custsmmo_internal_navigation') === 'true') {
    5174                sessionStorage.removeItem('custsmmo_internal_navigation');
    5275                return;
    5376            }
     77           
     78            // Check if modal has been shown before and not a refresh
     79            if (navType !== 'reload' && localStorage.getItem(domainKey) === 'true') {
     80                return; // Skip preloader if modal was shown before and not refreshing
     81            }
     82           
    5483            document.documentElement.classList.add('custsmmo-preloader-active');
    5584            document.addEventListener('DOMContentLoaded', function() {
  • custom-smart-modal/trunk/js/modal.js

    r3357543 r3357629  
    88    }, 8000);
    99
     10    const navEntry = performance.getEntriesByType("navigation")[0];
     11    const navType = navEntry ? navEntry.type : "navigate";
     12
     13    const domainKey = 'custsmmo_shown_before_' + window.location.hostname;
     14
     15    if (!sessionStorage.getItem('custsmmo_session_id')) {
     16        sessionStorage.setItem('custsmmo_session_id', Date.now().toString() + Math.random().toString(36).substring(2, 15));
     17    }
     18
     19    if (navType === "reload" || !localStorage.getItem('custsmmo_current_session')) {
     20        localStorage.removeItem(domainKey);
     21        localStorage.setItem('custsmmo_current_session', sessionStorage.getItem('custsmmo_session_id'));
     22    } else if (localStorage.getItem('custsmmo_current_session') !== sessionStorage.getItem('custsmmo_session_id')) {
     23        // Different session ID means new window/tab
     24        localStorage.removeItem(domainKey);
     25        localStorage.setItem('custsmmo_current_session', sessionStorage.getItem('custsmmo_session_id'));
     26    }
     27
     28    if (localStorage.getItem(domainKey) === 'true' && navType !== "reload") {
     29        const preloader = document.getElementById("custsmmo-preloader");
     30        if (preloader) {
     31            preloader.remove();
     32        }
     33        document.documentElement.classList.remove('custsmmo-preloader-active');
     34        return;
     35    }
    1036
    1137    if (sessionStorage.getItem('custsmmo_internal_navigation') === 'true') {
     
    1339        sessionStorage.removeItem('custsmmo_internal_navigation');
    1440       
    15         // Skip modal
     41        // Skip modal on internal navigation
    1642        const preloader = document.getElementById("custsmmo-preloader");
    1743        if (preloader) {
     
    5076        return;
    5177    }
    52 
    53     const navEntry = performance.getEntriesByType("navigation")[0];
    54     const navType = navEntry ? navEntry.type : "navigate";
    5578       
    5679    const isReloadOrDirect = navType === "reload" || navType === "navigate";
     
    6487        return;
    6588    }
     89
     90    localStorage.setItem(domainKey, 'true');
    6691
    6792    // ✅ Apply settings
  • custom-smart-modal/trunk/readme.txt

    r3357543 r3357629  
    66Tested up to: 6.8
    77Requires PHP: 7.4
    8 Stable tag: 1.1
     8Stable tag: 1.2
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    6464== Changelog ==
    6565
     66= 1.2 =
     67* Important update: Fixed preloader to not show on page navigation and fixed modal not to show on page navigation
     68
    6669= 1.1 =
    6770* Minor updates: Updated Delay Before Close default value, added shortcode for settings page under plugins and updated description text.
     
    7174
    7275== Upgrade Notice ==
     76
     77= 1.2 =
     78Plese update to latest version 1.2 to address all new updates.
    7379
    7480= 1.1 =
Note: See TracChangeset for help on using the changeset viewer.