Plugin Directory

Changeset 3453876


Ignore:
Timestamp:
02/04/2026 02:52:51 PM (2 months ago)
Author:
printess
Message:

Fixed bug in save dialog that triggered a considerable amount of add design calls on WooCommerce in case the user pressed enter inside the save dialog instead of clicking on the save button. This could result in older versions being saved and double entries inside the list of saved designs on the user account page.

Location:
printess-editor/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • printess-editor/trunk/includes/js/printessWoocommerce.js

    r3433308 r3453876  
    305305        printessFocusListeners[printessFocusListeners.length - 1].abort();
    306306        printessFocusListeners.pop();
     307    }
     308};
     309const addEventHelpersToDialog = (dialog) => {
     310    if (dialog) {
     311        dialog.eventHandlers = dialog.eventHandlers || {};
     312        if (typeof dialog.removeAllEventHandlers !== "function") {
     313            dialog.removeAllEventHandlers = function () {
     314                for (const eventHandler in dialog.eventHandlers) {
     315                    if (dialog.eventHandlers.hasOwnProperty(eventHandler) && dialog.eventHandlers[eventHandler]) {
     316                        dialog.eventHandlers[eventHandler].forEach((x) => {
     317                            dialog.removeEventListener(eventHandler, x);
     318                        });
     319                    }
     320                }
     321                dialog.eventHandlers = null;
     322            };
     323        }
     324        if (typeof dialog.addEventHandler !== "function") {
     325            dialog.addEventHandler = function (event, callback) {
     326                dialog.eventHandlers[event] = dialog.eventHandlers[event] || [];
     327                dialog.eventHandlers[event].push(callback);
     328                dialog.addEventListener(event, callback);
     329            };
     330        }
    307331    }
    308332};
     
    520544        const dialog = document.getElementById("printess_overlay_background");
    521545        let removeEventHandlers = () => { };
     546        addEventHelpersToDialog(dialog);
    522547        const cancelMouse = (e) => {
    523548            if (!e.srcElement || e.srcElement.nodeName.toLowerCase() !== "input" && e.srcElement.closest("div.printess_overlay_background") == null) {
     
    580605            }
    581606            if (dialog) {
    582                 dialog.removeEventListener("mousedown", cancelMouse);
    583                 dialog.removeEventListener("mouseup", cancelMouse);
    584                 dialog.removeEventListener("mousemove", cancelMouse);
    585                 dialog.removeEventListener("keydown", keyUpHandler);
    586                 dialog.removeEventListener("keyup", keyDownHandler);
     607                if (typeof dialog.removeAllEventHandlers === "function") {
     608                    dialog.removeAllEventHandlers();
     609                }
    587610            }
    588611        };
     
    612635        }
    613636        if (dialog) {
    614             dialog.addEventListener("mousedown", cancelMouse);
    615             dialog.addEventListener("mouseup", cancelMouse);
    616             dialog.addEventListener("mousemove", cancelMouse);
    617             dialog.addEventListener("keydown", keyDownHandler);
    618             dialog.addEventListener("keyup", keyUpHandler);
     637            dialog.addEventHandler("mousedown", cancelMouse);
     638            dialog.addEventHandler("mouseup", cancelMouse);
     639            dialog.addEventHandler("mousemove", cancelMouse);
     640            dialog.addEventHandler("keydown", keyDownHandler);
     641            dialog.addEventHandler("keyup", keyUpHandler);
    619642            if (!dialog.getAttribute("data-initialized")) {
    620643                document.body.appendChild(dialog);
     
    15841607    let hide = null;
    15851608    previouslyFocused = document.activeElement;
     1609    addEventHelpersToDialog(dlg);
    15861610    const keyUpHandler = (e) => {
    15871611        if (e.key === 'Enter' || e.keyCode === 13) {
     
    16251649        if (dlg) {
    16261650            dlg.style.display = "none";
    1627             dlg.removeEventListener("keyup", keyUpHandler);
    1628             dlg.removeEventListener("keydown", keyDownHandler);
     1651            if (typeof dlg.removeAllEventHandlers === "function") {
     1652                dlg.removeAllEventHandlers();
     1653            }
    16291654            printessFreeFocus();
    16301655        }
     
    16631688    if (dlg) {
    16641689        dlg.style.display = "block";
    1665         dlg.addEventListener("keyup", keyUpHandler);
    1666         dlg.addEventListener("keydown", keyDownHandler);
     1690        dlg.addEventHandler("keyup", keyUpHandler);
     1691        dlg.addEventHandler("keydown", keyDownHandler);
    16671692    }
    16681693    printessTrapFocus(dlg);
  • printess-editor/trunk/printess.php

    r3433308 r3453876  
    55 * Plugin URI: https://printess.com/kb/integrations/woo-commerce/index.html
    66 * Developer: Bastian Kröger (support@printess.com); Alexander Oser (support@printess.com)
    7  * Version: 1.6.74
     7 * Version: 1.6.75
    88 * Author: Printess
    99 * Author URI: https://printess.com
     
    1414 * Tested up to: 6.9
    1515 *
    16  * Woo: 10000:924031dfsfhsf8429842386wdff234sfd
     16 * Woo: 10000:924032dfsfhsf8429842386wdff234sfd
    1717 * WC requires at least: 5.8
    18  * WC tested up to: 10.3.6
     18 * WC tested up to: 10.4.3
    1919 */
    2020
  • printess-editor/trunk/readme.txt

    r3433308 r3453876  
    44Requires at least: 5.6
    55Tested up to: 6.9
    6 WC Tested up to: 10.3.6
    7 Stable tag: 1.6.74
     6WC Tested up to: 10.4.3
     7Stable tag: 1.6.75
    88Requires PHP: 8.1
    99License: GPLv2 or later
     
    374374 = 1.6.74 =
    375375 - Added additional basket item property printess_hide_quantity for products that have use record count as quantity activated.
     376
     377= 1.6.75 =
     378 - Fixed bug in save dialog that triggered a considerable amount of add design calls on WooCommerce in case the user pressed enter inside the save dialog instead of clicking on the save button. This could result in older versions being saved and double entries inside the list of saved designs on the user account page.
Note: See TracChangeset for help on using the changeset viewer.