javascript 如何禁用Odoo(v14)网站上的通讯模块的吐司消息

s5a0g9ez  于 2022-12-10  发布在  Java
关注(0)|答案(2)|浏览(189)

对于我开发的网站,我使用Newsletter模块创建了一个邮件列表。这对于基本需求来说已经足够了。当你插入一封电子邮件并点击订阅按钮时,它会显示(替换)“谢谢”消息并隐藏“订阅”按钮。它还显示了一条吐司词:页面右上角的“感谢订阅!”。
我不想为订阅的新闻稿显示吐司消息。很遗憾,没有启用/禁用它的选项。
如果我从website_mass_mailing.js文件中禁用/删除下面的部分,它不会显示吐司消息。

self.displayNotification({
    type: toastType,
    title: toastType === 'success' ? _t('Success') : _t('Error'),
    message: result.toast_content,
    sticky: true,
});

我不想碰这个文件(website_mass_mailing.js),而是继承它并删除该部分,但我无法成功。有什么建议如何做吗?

kxkpmulp

kxkpmulp1#

您应该创建一个依赖于website_mass_mailing并通过专用javascript模块扩展mass_mailing.website_integration的新模块。
例如:

odoo.define('my_module.mass_mailing_website_integration', function (require) {
  var website_integration = require('mass_mailing.website_integration');
  website_integration.extend({
    // Your Logic Here
  });
}

找到调用displayNotificationmass_mailing方法并覆盖它。不幸的是,我没有看到任何替代方法,只能从source复制粘贴它,然后删除所需的行为。
不要忘记在web_assets模板中包含javascript。

qyswt5oh

qyswt5oh2#

在@icra的建议之后,我试着弄清楚它,下面是对我有效的代码。
感谢Cybrosys Techno Solutions Pvt.Ltd以及实现该解决方案。
代码如下:

odoo.define('your_module.name', function (require){

    var publicWidget = require('web.public.widget');
    
    var _t = core._t;

    publicWidget.registry.subscribe.include({
        _onSubscribeClick: async function () {
            var self = this;
            var $email = this.$(".js_subscribe_email:visible");

            if ($email.length && !$email.val().match(/.+@.+/)) {
                this.$target.addClass('o_has_error').find('.form-control').addClass('is-invalid');
                return false;
            }
            this.$target.removeClass('o_has_error').find('.form-control').removeClass('is-invalid');
            let tokenObj = null;
            if (this._recaptcha) {
                tokenObj = await this._recaptcha.getToken('website_mass_mailing_subscribe');
                if (tokenObj.error) {
                    self.displayNotification({
                        type: 'danger',
                        title: _t("Error"),
                        message: tokenObj.error,
                        sticky: true,
                    });
                    return false;
                }
            }
            const params = {
                'list_id': this.$target.data('list-id'),
                'email': $email.length ? $email.val() : false,
            };
            if (this._recaptcha) {
                params['recaptcha_token_response'] = tokenObj.token;
            }
            this._rpc({
                route: '/website_mass_mailing/subscribe',
                params: params,
            }).then(function (result) {
                let toastType = result.toast_type;
                if (toastType === 'success') {
                    self.$(".js_subscribe_btn").addClass('d-none');
                    self.$(".js_subscribed_btn").removeClass('d-none');
                    self.$('input.js_subscribe_email').prop('disabled', !!result);
                    if (self.$popup.length) {
                        self.$popup.modal('hide');
                    }
                }

                // make the changes you need accordingly or comment out the below code.
                self.displayNotification({
                    type: toastType,
                    title: toastType === 'success' ? _t('Success') : _t('Error'),
                    message: result.toast_content,
                    sticky: true,
                });
            });
        },

    })

})

相关问题