diff --git a/datamodels/2.x/itop-portal-base/portal/public/js/portal_form_handler.js b/datamodels/2.x/itop-portal-base/portal/public/js/portal_form_handler.js index 8dca1e9fd..fc0123c73 100644 --- a/datamodels/2.x/itop-portal-base/portal/public/js/portal_form_handler.js +++ b/datamodels/2.x/itop-portal-base/portal/public/js/portal_form_handler.js @@ -26,6 +26,7 @@ $(function() $.widget( 'itop.portal_form_handler', $.itop.form_handler, { options: { + base_url: null, // Base URL of the application submit_url: null, // Deprecated. We kept those properties to preserve compatibility with extensions cancel_url: null, // but you should start using xxx_rule.url as soon as possible. submit_rule: { @@ -359,7 +360,12 @@ $(function() } else { + // Try to close the window window.close(); + + // In some browser (eg. Firefox 70), window won't close if it has NOT been open by JS. In that case, we try to redirect to homepage as a fallback. + var sHomepageUrl = (this.options.base_url !== null) ? this.options.base_url : $('#sidebar .menu .brick_menu_item:first a').attr('href') + window.location.href = sHomepageUrl; } }, submit: function(oEvent) diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig index 7b001fabb..1a4cbe9d2 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig @@ -76,6 +76,7 @@ field_set: oFieldSet_{{ sFormIdSanitized }}, submit_btn_selector: $('#{{ sFormId }}').parent().find('.form_btn_submit, .form_btn_transition'), cancel_btn_selector: $('#{{ sFormId }}').parent().find('.form_btn_cancel'), + base_url: "{{ app['combodo.absolute_url'] }}", {% if form.submit_rule is not null %}submit_rule: {{ form.submit_rule|json_encode|raw }}{% endif %}, {% if form.cancel_rule is not null %}cancel_rule: {{ form.cancel_rule|json_encode|raw }}{% endif %}, endpoint: "{{ form.renderer.GetEndpoint()|raw }}",