diff --git a/addons/portal/__manifest__.py b/addons/portal/__manifest__.py index f545e16ee60..3d11a22f5fe 100644 --- a/addons/portal/__manifest__.py +++ b/addons/portal/__manifest__.py @@ -32,6 +32,9 @@ a dependency towards website editing and customization capabilities.""", 'web._assets_frontend_helpers': [ ('prepend', 'portal/static/src/scss/bootstrap_overridden.scss'), ], + 'web.assets_backend': [ + 'portal/static/src/views/**/*', + ], 'web.assets_frontend': [ 'portal/static/src/scss/bootstrap.extend.scss', 'portal/static/src/scss/portal.scss', diff --git a/addons/portal/static/src/views/fields/portal_wizard_user_one2many.js b/addons/portal/static/src/views/fields/portal_wizard_user_one2many.js new file mode 100644 index 00000000000..840e52f86df --- /dev/null +++ b/addons/portal/static/src/views/fields/portal_wizard_user_one2many.js @@ -0,0 +1,14 @@ +/** @odoo-module **/ + +import { PortalWizardUserListRenderer } from "../list/portal_wizard_user_list_renderer"; +import { X2ManyField } from "@web/views/fields/x2many/x2many_field"; +import { registry } from "@web/core/registry"; + +export class PortalUserX2ManyField extends X2ManyField { + setup() { + super.setup(); + this.Renderer = PortalWizardUserListRenderer; + } +} + +registry.category("fields").add("portal_wizard_user_one2many", PortalUserX2ManyField); diff --git a/addons/portal/static/src/views/fields/portal_wizard_user_one2many.scss b/addons/portal/static/src/views/fields/portal_wizard_user_one2many.scss new file mode 100644 index 00000000000..bb5713fa64b --- /dev/null +++ b/addons/portal/static/src/views/fields/portal_wizard_user_one2many.scss @@ -0,0 +1,3 @@ +.o_portal_wizard_user_one2many td { + width: 1%; +} diff --git a/addons/portal/static/src/views/list/portal_wizard_user_list_renderer.js b/addons/portal/static/src/views/list/portal_wizard_user_list_renderer.js new file mode 100644 index 00000000000..4d21b441b1b --- /dev/null +++ b/addons/portal/static/src/views/list/portal_wizard_user_list_renderer.js @@ -0,0 +1,23 @@ +/** @odoo-module **/ + +import { ListRenderer } from "@web/views/list/list_renderer"; + +const { useSubEnv } = owl; + +export class PortalWizardUserListRenderer extends ListRenderer { + setup() { + super.setup(); + this.isPortalActionOngoing = false; + const defaultOnClickViewButton = this.env.onClickViewButton; + useSubEnv({ + onClickViewButton: async (params) => { + if (params.clickParams.name === 'action_refresh_modal' || this.isPortalActionOngoing) { + return false; + } + this.isPortalActionOngoing = true; + await defaultOnClickViewButton(params); + this.isPortalActionOngoing = false; + }, + }); + } +} diff --git a/addons/portal/wizard/portal_wizard.py b/addons/portal/wizard/portal_wizard.py index fc70dd821ee..e4d37de2fcc 100644 --- a/addons/portal/wizard/portal_wizard.py +++ b/addons/portal/wizard/portal_wizard.py @@ -206,7 +206,7 @@ class PortalWizardUser(models.TransientModel): return self.action_refresh_modal() def action_refresh_modal(self): - """Refresh the portal wizard modal and keep it open. Used as action of email state icon buttons, + """Refresh the portal wizard modal and keep it open. Used as fallback action of email state icon buttons, required as they must be non-disabled buttons to fire mouse events to show tooltips on email state.""" return self.wizard_id._action_open_modal() diff --git a/addons/portal/wizard/portal_wizard_views.xml b/addons/portal/wizard/portal_wizard_views.xml index 2b782e3a96b..a83805294e4 100644 --- a/addons/portal/wizard/portal_wizard_views.xml +++ b/addons/portal/wizard/portal_wizard_views.xml @@ -31,7 +31,7 @@ - +