diff --git a/addons/website_mass_mailing/__manifest__.py b/addons/website_mass_mailing/__manifest__.py index 1d6534dc96c..2e3679d8fe0 100644 --- a/addons/website_mass_mailing/__manifest__.py +++ b/addons/website_mass_mailing/__manifest__.py @@ -12,6 +12,7 @@ On a simple click, your visitors can subscribe to mailing lists managed in the E 'category': 'Website/Website', 'depends': ['website', 'mass_mailing', 'google_recaptcha'], 'data': [ + 'data/ir_model_data.xml', 'views/snippets/s_popup.xml', 'views/snippets_templates.xml', ], @@ -26,6 +27,9 @@ On a simple click, your visitors can subscribe to mailing lists managed in the E 'website_mass_mailing/static/src/scss/website_mass_mailing_edit_mode.scss', 'website_mass_mailing/static/src/snippets/s_popup/options.js', ], + 'website.assets_editor': [ + 'website_mass_mailing/static/src/js/mass_mailing_form_editor.js', + ], 'web.assets_tests': [ 'website_mass_mailing/static/tests/**/*', ], diff --git a/addons/website_mass_mailing/controllers/__init__.py b/addons/website_mass_mailing/controllers/__init__.py index 5d4b25db9c0..bfc688ef34c 100644 --- a/addons/website_mass_mailing/controllers/__init__.py +++ b/addons/website_mass_mailing/controllers/__init__.py @@ -2,3 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import main +from . import website_form diff --git a/addons/website_mass_mailing/controllers/website_form.py b/addons/website_mass_mailing/controllers/website_form.py new file mode 100644 index 00000000000..f8fe538e680 --- /dev/null +++ b/addons/website_mass_mailing/controllers/website_form.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import json + +from odoo import _ +from odoo.http import request +from odoo.addons.website.controllers.form import WebsiteForm + + +class WebsiteNewsletterForm(WebsiteForm): + + def _handle_website_form(self, model_name, **kwargs): + if model_name == 'mailing.contact': + list_ids = [int(x) for x in kwargs['list_ids'].split(',')] + private_list_ids = request.env['mailing.list'].search([ + ('id', 'in', list_ids), ('is_public', '=', False)]) + if private_list_ids: + return json.dumps({ + 'error': _('You cannot subscribe to the following list anymore : %s', + ', '.join(private_list_ids.mapped('name'))) + }) + return super()._handle_website_form(model_name, **kwargs) diff --git a/addons/website_mass_mailing/data/ir_model_data.xml b/addons/website_mass_mailing/data/ir_model_data.xml new file mode 100644 index 00000000000..207bc10a7cf --- /dev/null +++ b/addons/website_mass_mailing/data/ir_model_data.xml @@ -0,0 +1,23 @@ + + + + + create_mailing_contact + True + Subscribe to Newsletter + + + + mailing.contact + + + + diff --git a/addons/website_mass_mailing/static/src/js/mass_mailing_form_editor.js b/addons/website_mass_mailing/static/src/js/mass_mailing_form_editor.js new file mode 100644 index 00000000000..72c71b57011 --- /dev/null +++ b/addons/website_mass_mailing/static/src/js/mass_mailing_form_editor.js @@ -0,0 +1,26 @@ +/** @odoo-module **/ + +import core from "web.core"; +import FormEditorRegistry from "website.form_editor_registry"; + +const _t = core._t; + +FormEditorRegistry.add('create_mailing_contact', { + formFields: [{ + name: 'name', + required: true, + string: _t('Your Name'), + type: 'char', + }, { + name: 'email', + required: true, + string: _t('Your Email'), + type: 'email', + }, { + name: 'list_ids', + relation: 'mailing.list', + required: true, + string: _t('Subscribe to'), + type: 'many2many', + }], +});