mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 14:41:29 +01:00
fix vfs-select dialog destroyed et2 session of popup calling it
dialog set etemplate_exec_id of popup, to be able to submit to server, but must NOT destroy the et2 session when the dialog closes et2_dialog now calls etemplate2.clear(true, true) to keep app-object AND et2 session
This commit is contained in:
parent
052f5f23cc
commit
b2a48fc942
@ -322,7 +322,9 @@ export class et2_dialog extends et2_widget {
|
|||||||
this.div.dialog("destroy");
|
this.div.dialog("destroy");
|
||||||
|
|
||||||
if (this.template) {
|
if (this.template) {
|
||||||
this.template.clear(true);
|
// if the dialog has an etemplate_exec_id, like the vfs select dialog, we must NOT delete the server-side
|
||||||
|
// et2 session, as the exec-id is NOT from the dialog, but some other template
|
||||||
|
this.template.clear(true, true);
|
||||||
this.template = null;
|
this.template = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -904,5 +906,5 @@ export class et2_dialog extends et2_widget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// make et2_dialog publicly available as we need to call it from templates
|
// make et2_dialog publicly available as we need to call it from templates
|
||||||
window['et2_dialog'] = et2_dialog;
|
if (typeof window.et2_dialog === 'undefined') window['et2_dialog'] = et2_dialog;
|
||||||
et2_register_widget(et2_dialog, ["dialog"]);
|
et2_register_widget(et2_dialog, ["dialog"]);
|
@ -1460,11 +1460,6 @@ export class et2_vfsSelect extends et2_inputWidget
|
|||||||
app.vfsSelectUI.vfsSelectWidget = self;
|
app.vfsSelectUI.vfsSelectWidget = self;
|
||||||
app.vfsSelectUI.et2_ready(app.vfsSelectUI.et2, 'api.vfsSelectUI');
|
app.vfsSelectUI.et2_ready(app.vfsSelectUI.et2, 'api.vfsSelectUI');
|
||||||
});
|
});
|
||||||
|
|
||||||
// we need an etemplate_exec_id for better handling serverside parts of
|
|
||||||
// widgets and since we can not have a etemplate_exec_id specifically
|
|
||||||
// for dialog template our best shot is to inherit its parent etemplate_exec_id.
|
|
||||||
this.dialog.template.etemplate_exec_id = et2.etemplate_exec_id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -224,8 +224,9 @@ export class etemplate2
|
|||||||
/**
|
/**
|
||||||
* Clears the current instance.
|
* Clears the current instance.
|
||||||
* @param _keep_app_object keep app object
|
* @param _keep_app_object keep app object
|
||||||
|
* @param _keep_session keep server-side et2 session eg. for vfs-select
|
||||||
*/
|
*/
|
||||||
public clear(_keep_app_object?:boolean)
|
public clear(_keep_app_object?:boolean, _keep_session?: boolean)
|
||||||
{
|
{
|
||||||
jQuery(this._DOMContainer).trigger('clear');
|
jQuery(this._DOMContainer).trigger('clear');
|
||||||
|
|
||||||
@ -238,7 +239,7 @@ export class etemplate2
|
|||||||
// call our destroy_session handler, if it is not already unbind, and unbind it after
|
// call our destroy_session handler, if it is not already unbind, and unbind it after
|
||||||
if (this.destroy_session)
|
if (this.destroy_session)
|
||||||
{
|
{
|
||||||
this.destroy_session();
|
if (!_keep_session) this.destroy_session();
|
||||||
this.unbind_unload();
|
this.unbind_unload();
|
||||||
}
|
}
|
||||||
if (this._widgetContainer != null)
|
if (this._widgetContainer != null)
|
||||||
@ -257,7 +258,7 @@ export class etemplate2
|
|||||||
if (typeof etemplate2._byTemplate[name] == "undefined") continue;
|
if (typeof etemplate2._byTemplate[name] == "undefined") continue;
|
||||||
for (let i = 0; i < etemplate2._byTemplate[name].length; i++)
|
for (let i = 0; i < etemplate2._byTemplate[name].length; i++)
|
||||||
{
|
{
|
||||||
if (etemplate2._byTemplate[name][i] == this)
|
if (etemplate2._byTemplate[name][i] === this)
|
||||||
{
|
{
|
||||||
etemplate2._byTemplate[name].splice(i, 1);
|
etemplate2._byTemplate[name].splice(i, 1);
|
||||||
}
|
}
|
||||||
@ -1444,7 +1445,7 @@ export class etemplate2
|
|||||||
}
|
}
|
||||||
|
|
||||||
// make etemplate2 global, as we need it to check an app uses it and then call methods on it
|
// make etemplate2 global, as we need it to check an app uses it and then call methods on it
|
||||||
window['etemplate2'] = etemplate2;
|
if (typeof window.etemplate2 === 'undefined') window['etemplate2'] = etemplate2;
|
||||||
|
|
||||||
// Calls etemplate2_handle_response in the context of the object which
|
// Calls etemplate2_handle_response in the context of the object which
|
||||||
// requested the response from the server
|
// requested the response from the server
|
||||||
|
Loading…
Reference in New Issue
Block a user