From da3f4c2aff92cca23ca2d7a87fa0eb5b1d7ce5fe Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Thu, 25 Aug 2022 14:43:21 +0000 Subject: [PATCH] [IMP] website, *: fill the "Content" area of the main website menu *: website_blog, website_event, website_forum, website_hr_recruitment, website_sale, website_slides As indicated by previous commits, new custom list views are created to fill the "Content" area of the main website menu with key app models: blog posts, events, forum posts, jobs, products and courses (+ some in the enterprise version, see related commit). Those list views will act as the page manager one: a click on an item redirect to the website iframe, the create button acts as creating a record via the "+ New" systray button while being on the iframe, the delete button will in the future allow to know the page that mentions the related object before deleting it, etc etc. task-2889981 closes odoo/odoo#98937 Related: odoo/enterprise#30782 Signed-off-by: Quentin Smetz (qsm) --- addons/website/views/website_pages_views.xml | 1 + .../website_blog/views/website_blog_views.xml | 5 +- .../views/website_pages_views.xml | 51 ++++++++++--------- addons/website_event/__manifest__.py | 1 + .../views/website_pages_views.xml | 43 ++++++++++++++++ addons/website_forum/models/forum.py | 18 +++---- addons/website_forum/views/forum.xml | 9 ++-- .../views/website_pages_views.xml | 34 ++++++++----- addons/website_hr_recruitment/__manifest__.py | 1 + .../views/hr_recruitment_views.xml | 2 +- .../views/website_pages_views.xml | 43 ++++++++++++++++ addons/website_sale/__manifest__.py | 1 + .../views/website_pages_views.xml | 45 ++++++++++++++++ addons/website_slides/__manifest__.py | 1 + .../views/website_pages_views.xml | 43 ++++++++++++++++ 15 files changed, 243 insertions(+), 55 deletions(-) create mode 100644 addons/website_event/views/website_pages_views.xml create mode 100644 addons/website_hr_recruitment/views/website_pages_views.xml create mode 100644 addons/website_sale/views/website_pages_views.xml create mode 100644 addons/website_slides/views/website_pages_views.xml diff --git a/addons/website/views/website_pages_views.xml b/addons/website/views/website_pages_views.xml index 2fb461fb10c..ac5c43bacb6 100644 --- a/addons/website/views/website_pages_views.xml +++ b/addons/website/views/website_pages_views.xml @@ -73,6 +73,7 @@ website.page.list website.page + 99 diff --git a/addons/website_blog/views/website_blog_views.xml b/addons/website_blog/views/website_blog_views.xml index 502d56ab289..432ba973baf 100644 --- a/addons/website_blog/views/website_blog_views.xml +++ b/addons/website_blog/views/website_blog_views.xml @@ -1,6 +1,5 @@ - blog.blog.list @@ -128,8 +127,8 @@ - + + name="Tag Categories" action="action_tag_category" sequence="40"/> diff --git a/addons/website_blog/views/website_pages_views.xml b/addons/website_blog/views/website_pages_views.xml index 5454a34a143..b103ab81b55 100644 --- a/addons/website_blog/views/website_pages_views.xml +++ b/addons/website_blog/views/website_pages_views.xml @@ -69,10 +69,10 @@
+ t-att-title="record.author_id.value" + t-att-alt="record.author_id.value" + class="oe_kanban_avatar o_image_24_cover" + t-att-src="kanban_image('res.partner', 'avatar_128', record.author_id.raw_value)"/>
@@ -101,41 +101,42 @@
- blog.post.list + Blog Post Pages Tree blog.post + 99 - - + - - + + + + + + + + + + + + - - - - - Blog Posts + Blog Post Pages blog.post - tree,form,kanban + tree,kanban,form - -

- Create a new blog post -

-
+ {'create_action': 'website_blog.blog_post_action_add'}
- diff --git a/addons/website_event/__manifest__.py b/addons/website_event/__manifest__.py index b7c2ea21f63..a1a323ee62d 100644 --- a/addons/website_event/__manifest__.py +++ b/addons/website_event/__manifest__.py @@ -33,6 +33,7 @@ 'views/website_event_menu_views.xml', 'views/website_visitor_views.xml', 'views/event_menus.xml', + 'views/website_pages_views.xml', 'views/event_event_add.xml', 'security/ir.model.access.csv', 'security/event_security.xml', diff --git a/addons/website_event/views/website_pages_views.xml b/addons/website_event/views/website_pages_views.xml new file mode 100644 index 00000000000..d6f687047ad --- /dev/null +++ b/addons/website_event/views/website_pages_views.xml @@ -0,0 +1,43 @@ + + + + + Event Pages Tree + event.event + 99 + primary + + + + website_pages_list + object + open_website_url + + + + + + + + + + + + + + + + Event Pages + event.event + tree + + {'create_action': 'website_event.event_event_action_add'} + + + + + diff --git a/addons/website_forum/models/forum.py b/addons/website_forum/models/forum.py index 8ed0d505ceb..b22548ef2ec 100644 --- a/addons/website_forum/models/forum.py +++ b/addons/website_forum/models/forum.py @@ -255,7 +255,7 @@ class Forum(models.Model): return { 'type': 'ir.actions.act_url', 'target': 'self', - 'url': self._compute_website_url(), + 'url': self.env['website'].get_client_action_url(self._compute_website_url()), } @api.model @@ -313,6 +313,7 @@ class Post(models.Model): views = fields.Integer('Views', default=0, readonly=True, copy=False) active = fields.Boolean('Active', default=True) website_message_ids = fields.One2many(domain=lambda self: [('model', '=', self._name), ('message_type', 'in', ['email', 'comment'])]) + website_url = fields.Char('Website URL', compute='_compute_website_url') website_id = fields.Many2one(related='forum_id.website_id', readonly=True) # history @@ -965,18 +966,18 @@ class Post(models.Model): return super(Post, self)._notify_thread_by_inbox(message, recipients_data, msg_vals=msg_vals, **kwargs) def _compute_website_url(self): - return '/forum/{forum}/{post}{anchor}'.format( - forum=slug(self.forum_id), - post=slug(self), - anchor=self.parent_id and '#answer_%d' % self.id or '' - ) + for post in self: + forum_slug = slug(post.forum_id) + post_slug = slug(post) + anchor = post.parent_id and '#answer_%d' % post.id or '' + post.website_url = f'/forum/{forum_slug}/{post_slug}{anchor}' def go_to_website(self): self.ensure_one() return { 'type': 'ir.actions.act_url', 'target': 'self', - 'url': self._compute_website_url(), + 'url': self.env['website'].get_client_action_url(self.website_url), } @api.model @@ -984,7 +985,7 @@ class Post(models.Model): with_description = options['displayDescription'] with_date = options['displayDetail'] search_fields = ['name'] - fetch_fields = ['id', 'name'] + fetch_fields = ['id', 'name', 'website_url'] mapping = { 'name': {'name': 'name', 'type': 'text', 'match': True}, 'website_url': {'name': 'website_url', 'type': 'text', 'truncate': False}, @@ -1043,7 +1044,6 @@ class Post(models.Model): with_date = 'detail' in mapping results_data = super()._search_render_results(fetch_fields, mapping, icon, limit) for post, data in zip(self, results_data): - data['website_url'] = post._compute_website_url() if with_date: data['date'] = self.env['ir.qweb.field.date'].record_to_html(post, 'write_date', {}) return results_data diff --git a/addons/website_forum/views/forum.xml b/addons/website_forum/views/forum.xml index ea78e699357..ea2c54258db 100644 --- a/addons/website_forum/views/forum.xml +++ b/addons/website_forum/views/forum.xml @@ -229,15 +229,14 @@ tree - - - - - + + + + diff --git a/addons/website_forum/views/website_pages_views.xml b/addons/website_forum/views/website_pages_views.xml index c917397a03e..57af518868c 100644 --- a/addons/website_forum/views/website_pages_views.xml +++ b/addons/website_forum/views/website_pages_views.xml @@ -106,31 +106,37 @@ - forum.post.list + Forum Post Pages Tree forum.post + 99 - - + - - - + + + + + + - + decoration-warning="state not in ('active', 'close')" optional="show"/> + + + + - Forum Posts + Forum Post Pages forum.post - tree,form,graph + tree,graph - {'search_default_posts':1} + {'search_default_posts': 1, 'create_action': 'website_forum.forum_forum_action_add'}

Create a new forum post @@ -138,6 +144,10 @@ - + diff --git a/addons/website_hr_recruitment/__manifest__.py b/addons/website_hr_recruitment/__manifest__.py index e63bee5690d..92b8e35a489 100644 --- a/addons/website_hr_recruitment/__manifest__.py +++ b/addons/website_hr_recruitment/__manifest__.py @@ -16,6 +16,7 @@ 'views/website_hr_recruitment_templates.xml', 'views/hr_recruitment_views.xml', 'views/hr_job_views.xml', + 'views/website_pages_views.xml', 'views/snippets.xml', ], 'demo': [ diff --git a/addons/website_hr_recruitment/views/hr_recruitment_views.xml b/addons/website_hr_recruitment/views/hr_recruitment_views.xml index b535c7e0f5c..b921d154c0b 100644 --- a/addons/website_hr_recruitment/views/hr_recruitment_views.xml +++ b/addons/website_hr_recruitment/views/hr_recruitment_views.xml @@ -64,7 +64,7 @@ - + diff --git a/addons/website_hr_recruitment/views/website_pages_views.xml b/addons/website_hr_recruitment/views/website_pages_views.xml new file mode 100644 index 00000000000..51c8e735c01 --- /dev/null +++ b/addons/website_hr_recruitment/views/website_pages_views.xml @@ -0,0 +1,43 @@ + + + + + Job Pages Tree + hr.job + 99 + primary + + + + website_pages_list + object + open_website_url + + + + + + + + + + + + + + + + Job Pages + hr.job + tree + + {'create_action': '/jobs/add'} + + + + + diff --git a/addons/website_sale/__manifest__.py b/addons/website_sale/__manifest__.py index 537092b3ca5..de53db5b869 100644 --- a/addons/website_sale/__manifest__.py +++ b/addons/website_sale/__manifest__.py @@ -34,6 +34,7 @@ 'views/base_unit_view.xml', 'views/product_product_add.xml', 'views/website_views.xml', + 'views/website_pages_views.xml', ], 'demo': [ 'data/demo.xml', diff --git a/addons/website_sale/views/website_pages_views.xml b/addons/website_sale/views/website_pages_views.xml new file mode 100644 index 00000000000..3f1b7e4e48b --- /dev/null +++ b/addons/website_sale/views/website_pages_views.xml @@ -0,0 +1,45 @@ + + + + + Product Pages Tree + product.template + 99 + primary + + + + website_pages_list + object + open_website_url + + + + + + + + + + + + + + + + + + Product Pages + product.template + tree + + {'create_action': 'website_sale.product_product_action_add'} + + + + + diff --git a/addons/website_slides/__manifest__.py b/addons/website_slides/__manifest__.py index a0d2d854853..b861058b3f5 100644 --- a/addons/website_slides/__manifest__.py +++ b/addons/website_slides/__manifest__.py @@ -47,6 +47,7 @@ Featuring 'views/website_slides_templates_lesson_embed.xml', 'views/website_slides_templates_profile.xml', 'views/website_slides_templates_utils.xml', + 'views/website_pages_views.xml', 'views/slide_channel_add.xml', 'wizard/slide_channel_invite_views.xml', 'data/gamification_data.xml', diff --git a/addons/website_slides/views/website_pages_views.xml b/addons/website_slides/views/website_pages_views.xml new file mode 100644 index 00000000000..78b3fe393f2 --- /dev/null +++ b/addons/website_slides/views/website_pages_views.xml @@ -0,0 +1,43 @@ + + + + + Course Pages Tree + slide.channel + 99 + primary + + + + website_pages_list + object + open_website_url + + + + + + + + + + + + + + + + Course Pages + slide.channel + tree + + {'create_action': 'website_slides.slide_channel_action_add'} + + + + +