CallBackery

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

0.59.0 2026-08-20 08:58:50 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - New optional actionCfg property "noBusyIndicator" for download and
   display actions. When set, the modal busy indicator ("Preparing
   Download ...") is not shown while the download is being prepared, so
   the gui stays usable for actions which take a long time to produce
   their data. Default behaviour is unchanged.

0.58.4 2026-07-31 16:15:51 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - Frontend ui.Login: a login could be lost outright. The credentials
   were copied into the hidden iframe form that exists only to make the
   browser offer to save the password, and that copy ran before the
   login call, unguarded. The iframe reloads /login every time the login
   window appears, so whenever that fetch had not completed yet -- a
   busy server is enough -- getElementById returned null, the handler
   threw on it, and the login request was never sent. The form had
   already disabled itself, so it just sat there greyed out with nothing
   on screen to explain it, and only a reload got the user out of it.
   The password manager hand-off now happens after a successful login
   and is fully guarded, so it can miss the save prompt but can no

lib/CallBackery/qooxdoo/callbackery/source/class/callbackery/ui/Login.js  view on Meta::CPAN

            }
        });
        var rpc = callbackery.data.Server.getInstance();

        login.addListener("execute", function(e) {
            this.setEnabled(false);
            var passwordValue;
            if (! cfg.hide_password) {
                passwordValue = password.getValue();
            }
            // The credentials are handed to the hidden iframe form in the
            // handler, once the login actually succeeded. Nothing about the
            // iframe happens before this call: it is a convenience for the
            // browser's password manager and must never be able to stop a
            // login. It used to run here, and whenever the iframe had not
            // finished loading /login the null it returned threw before this
            // line ever ran -- leaving the form disabled forever with no
            // request sent and nothing on screen to say why.
            rpc.callAsync(qx.lang.Function.bind(
                    this.__loginHandler, this, username.getValue(), passwordValue),
                'login',

lib/CallBackery/qooxdoo/callbackery/source/class/callbackery/ui/Login.js  view on Meta::CPAN

            else if (urlCfg.app === 'passwordreset' && this.__passwordresetBtn){
                this.__passwordresetBtn.fireEvent('tap');
            }
        },this);
    },

    events : { 'login' : 'qx.event.type.Event' },

    members : {
        /**
         * Hand the credentials to the browser's password manager by filling
         * the hidden iframe form and submitting it.
         *
         * Best effort by design. The iframe reloads /login on every appear,
         * so its document can still be blank when this runs and
         * getElementById then returns null. That is a missed save prompt and
         * nothing more, so every step is guarded and the caller ignores the
         * outcome -- this must never come between the user and their session.
         *
         * @param username {String} the user name to offer for saving
         * @param password {String} the password to offer, may be undefined

lib/CallBackery/qooxdoo/callbackery/source/class/callbackery/ui/Login.js  view on Meta::CPAN

                    this.debug('login iframe not ready, skipping the password save prompt');
                    return;
                }
                userField.value = username;
                if (password !== undefined && passField) {
                    passField.value = password;
                }
                form.submit();
            }
            catch (e) {
                this.debug('could not offer the credentials for saving: ' + e);
            }
        },

        /**
         * Handler for the login events
         *
         * @param username {String} the user name that was submitted.
         * @param password {String} the password that was submitted, may be undefined.
         * @param ret {Boolean} true if the login is ok and false if it is not ok.
         * @param exc {Exception} any error found during the login process.



( run in 1.934 second using v1.01-cache-2.11-cpan-007c89162af )