mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
webui: do not show closed dialog
Fixes issues when dialog is not removed from `IPA.opened_dialogs` registry when dialog.close() is called while the dialog is not shown, i.e., while other dialog is shown. Without it, the dialog is could be incorrectly displayed. New dialog's property `opened` handles whether dialog is intended to be opened. How to test: Add new host with IP address outside of managed reverse zones to get error 4304. https://fedorahosted.org/freeipa/ticket/4656 Reviewed-By: Endi Sukma Dewata <edewata@redhat.com>
This commit is contained in:
parent
43f8de0c76
commit
41a7d0bf47
@ -238,6 +238,16 @@ IPA.dialog = function(spec) {
|
||||
/** @property {boolean} Dialog is shown */
|
||||
that.is_shown = false;
|
||||
|
||||
/**
|
||||
* Whether dialog should be opened.
|
||||
*
|
||||
* The actual display state is reflected in `is_shown` property. Dialog can
|
||||
* be `opened` and not `is_shown` at the same time, eg., when other dialog
|
||||
* is displayed. Opposite is invalid state.
|
||||
* @property {boolean}
|
||||
*/
|
||||
that.opened = false;
|
||||
|
||||
/**
|
||||
* Close dialog on Escape key press
|
||||
* @property {boolean} close_on_escape=true
|
||||
@ -556,6 +566,7 @@ IPA.dialog = function(spec) {
|
||||
|
||||
that.register_listeners();
|
||||
|
||||
this.opened = true;
|
||||
this.emit('open', { source: that });
|
||||
topic.publish('dialog.open', { source: that });
|
||||
|
||||
@ -571,6 +582,7 @@ IPA.dialog = function(spec) {
|
||||
* @param {Function} clb Show callback, called when showing is complete.
|
||||
*/
|
||||
that.show = function(clb) {
|
||||
if (!this.opened) return;
|
||||
that.is_shown = true;
|
||||
this.dom_node.one('shown.bs.modal', clb);
|
||||
|
||||
@ -648,6 +660,12 @@ IPA.dialog = function(spec) {
|
||||
that.close = function() {
|
||||
|
||||
that.remove_listeners();
|
||||
this.opened = false;
|
||||
|
||||
if (!this.is_shown) {
|
||||
that.emit('closed', { source: that });
|
||||
topic.publish('dialog.closed', { source: that });
|
||||
}
|
||||
|
||||
if (!that.dom_node) return;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user