From 96da5888916c28c8ad530e9ec59a3742f0df200a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 1 Jul 2020 14:04:23 +0000 Subject: [PATCH] [IMP] website_event(_track)_online: improve pages and menus management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RATIONALE Events are sometimes held online, gathering a community. In this merge we improve Event application to better support full-online events with improved tracks, wishlists, chat rooms, ... PURPOSE Improve menu generation, linked to website_event and website_event_track. Also remove frontend menu management, getting back backend management. SPECIFICATIONS: MENU GENERATION Add sequence to menus, allowing to ensure order of menus. This is done through an override of some methods, leading to a transparent modification of behavior. SPECIFICATIONS: MENU MANAGEMENT Remove front-end menu management. Keep only the global "website menu" customize option. Indeed it is quite slow and clutters the frontend management UI. Get fields back on event and event type backend views. Put them in group noone to avoid having too much fields on form view while allowing to thune them. JS and code allowing to manage through frontend is simply de-activated in this commit. That way existing use of website_event(_track) is not impacted by this commit. LINKS Community PR #53540 Enterprise PR odoo/enterprise#11384 Task ID-2252655 (Main Online Event task) Task ID-2283796 (Event B2Basics / Registration Flow) Co-Authored-By: Aurélien Warnon Co-Authored-By: David Beguin Co-Authored-By: Thibault Delavallée --- addons/website_event_online/__manifest__.py | 1 + .../website_event_online/models/__init__.py | 1 + .../models/event_event.py | 47 +++++++++++++++++++ .../views/event_event_views.xml | 18 +++++++ .../__manifest__.py | 1 + .../models/__init__.py | 1 + .../models/event_event.py | 27 +++++++++++ .../src/js/website_event_customize_options.js | 13 +++++ .../xml/website_event_customize_options.xml | 11 +++++ .../views/assets.xml | 1 + .../views/event_event_views.xml | 18 +++++++ .../views/event_track_templates.xml | 9 ++++ 12 files changed, 148 insertions(+) create mode 100644 addons/website_event_online/models/event_event.py create mode 100644 addons/website_event_online/views/event_event_views.xml create mode 100644 addons/website_event_track_online/models/event_event.py create mode 100644 addons/website_event_track_online/static/src/js/website_event_customize_options.js create mode 100644 addons/website_event_track_online/static/src/xml/website_event_customize_options.xml create mode 100644 addons/website_event_track_online/views/event_event_views.xml diff --git a/addons/website_event_online/__manifest__.py b/addons/website_event_online/__manifest__.py index 227aaa50f93..46ad6a7d2b2 100644 --- a/addons/website_event_online/__manifest__.py +++ b/addons/website_event_online/__manifest__.py @@ -15,6 +15,7 @@ ], 'data': [ 'security/ir.model.access.csv', + 'views/event_event_views.xml', 'views/event_registration_views.xml', 'views/website_visitor_views.xml', ], diff --git a/addons/website_event_online/models/__init__.py b/addons/website_event_online/models/__init__.py index ea59b0afad8..fa937cadda2 100644 --- a/addons/website_event_online/models/__init__.py +++ b/addons/website_event_online/models/__init__.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import event_event from . import event_registration from . import website_visitor diff --git a/addons/website_event_online/models/event_event.py b/addons/website_event_online/models/event_event.py new file mode 100644 index 00000000000..9c7d1680f77 --- /dev/null +++ b/addons/website_event_online/models/event_event.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models, _ +from odoo.addons.http_routing.models.ir_http import slug + + +class Event(models.Model): + _name = 'event.event' + _inherit = 'event.event' + + # ------------------------------------------------------------ + # WEBSITE MENU MANAGEMENT + # ------------------------------------------------------------ + + def _get_menu_entries(self): + """ Deprecate old method as a new one with more information is used + starting with website_event_online module. """ + return [] + + def _get_menu_entries_online(self): + """ Method returning menu entries to display on the website view of the + event, possibly depending on some options in inheriting modules. + + Each menu entry is a tuple containing : + * name: menu item name + * url: if set, url to a route (do not use xml_id in that case); + * xml_id: template linked to the page (do not use url in that case); + * sequence: specific sequence of menu entry to be set on the menu; + * menu_type: type of menu entry (used in inheriting modules to ease + menu management; not used in this module in 13.3 due to technical + limitations); + """ + self.ensure_one() + return [ + (_('Introduction'), False, 'website_event.template_intro', 1, False), + (_('Location'), False, 'website_event.template_location', 50, False), + (_('Register'), '/event/%s/register' % slug(self), False, 100, False), + ] + + def _update_website_menus(self, menus_update_by_field=None): + """ Synchronize event configuration and its menu entries for frontend. """ + super(Event, self)._update_website_menus(menus_update_by_field=menus_update_by_field) + for event in self: + if event.website_menu and (not menus_update_by_field or event in menus_update_by_field.get('website_menu')): + for name, url, xml_id, menu_sequence, menu_type in event._get_menu_entries_online(): + event._create_menu(menu_sequence, name, url, xml_id, menu_type=menu_type) diff --git a/addons/website_event_online/views/event_event_views.xml b/addons/website_event_online/views/event_event_views.xml new file mode 100644 index 00000000000..e968ea1e903 --- /dev/null +++ b/addons/website_event_online/views/event_event_views.xml @@ -0,0 +1,18 @@ + + + + + event.event.view.form.inherit.online + event.event + + + +
+
+
+
+
+ +
diff --git a/addons/website_event_track_online/__manifest__.py b/addons/website_event_track_online/__manifest__.py index c85e7abeea5..9148c7169a3 100644 --- a/addons/website_event_track_online/__manifest__.py +++ b/addons/website_event_track_online/__manifest__.py @@ -18,6 +18,7 @@ 'data': [ 'security/ir.model.access.csv', 'views/assets.xml', + 'views/event_event_views.xml', 'views/event_track_templates_reminder.xml', 'views/event_track_templates.xml', 'views/event_track_views.xml', diff --git a/addons/website_event_track_online/models/__init__.py b/addons/website_event_track_online/models/__init__.py index 645b184349c..33e6632706b 100644 --- a/addons/website_event_track_online/models/__init__.py +++ b/addons/website_event_track_online/models/__init__.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import event_event from . import event_track_visitor from . import event_track from . import website_visitor diff --git a/addons/website_event_track_online/models/event_event.py b/addons/website_event_track_online/models/event_event.py new file mode 100644 index 00000000000..1687967c00b --- /dev/null +++ b/addons/website_event_track_online/models/event_event.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models, _ +from odoo.addons.http_routing.models.ir_http import slug + + +class EventEvent(models.Model): + _inherit = "event.event" + + # ------------------------------------------------------------ + # WEBSITE MENU MANAGEMENT + # ------------------------------------------------------------ + + # OVERRIDES: ADD SEQUENCE + def _get_track_menu_entries(self): + """ Remove agenda as this is now managed separately """ + self.ensure_one() + return [ + (_('Talks'), '/event/%s/track' % slug(self), False, 10, 'track'), + (_('Agenda'), '/event/%s/agenda' % slug(self), False, 70, 'track') + ] + + def _get_track_proposal_menu_entries(self): + """ See website_event_track._get_track_menu_entries() """ + self.ensure_one() + return [(_('Talk Proposals'), '/event/%s/track_proposal' % slug(self), False, 15, 'track_proposal')] diff --git a/addons/website_event_track_online/static/src/js/website_event_customize_options.js b/addons/website_event_track_online/static/src/js/website_event_customize_options.js new file mode 100644 index 00000000000..d86ef9db4b2 --- /dev/null +++ b/addons/website_event_track_online/static/src/js/website_event_customize_options.js @@ -0,0 +1,13 @@ +odoo.define('website_event_track_online.set_customize_options', function (require) { +"use strict"; + +var EventSpecificOptions = require('website_event.set_customize_options').EventSpecificOptions; + +EventSpecificOptions.include({ + xmlDependencies: (EventSpecificOptions.prototype.xmlDependencies || []) + .concat([ + '/website_event_track_online/static/src/xml/website_event_customize_options.xml', + ]), +}); + +}); diff --git a/addons/website_event_track_online/static/src/xml/website_event_customize_options.xml b/addons/website_event_track_online/static/src/xml/website_event_customize_options.xml new file mode 100644 index 00000000000..22d5e2fd836 --- /dev/null +++ b/addons/website_event_track_online/static/src/xml/website_event_customize_options.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/addons/website_event_track_online/views/assets.xml b/addons/website_event_track_online/views/assets.xml index ca095992bb0..6fc02ebf98c 100644 --- a/addons/website_event_track_online/views/assets.xml +++ b/addons/website_event_track_online/views/assets.xml @@ -7,6 +7,7 @@ + diff --git a/addons/website_event_track_online/views/event_event_views.xml b/addons/website_event_track_online/views/event_event_views.xml new file mode 100644 index 00000000000..0f95fc80b9b --- /dev/null +++ b/addons/website_event_track_online/views/event_event_views.xml @@ -0,0 +1,18 @@ + + + + + event.event.view.from.inherit.track.online + event.event + + + + + + + + diff --git a/addons/website_event_track_online/views/event_track_templates.xml b/addons/website_event_track_online/views/event_track_templates.xml index 6ca0cfbc5de..1d6c198eda0 100644 --- a/addons/website_event_track_online/views/event_track_templates.xml +++ b/addons/website_event_track_online/views/event_track_templates.xml @@ -1,6 +1,15 @@ + + + + + + + + +