diff --git a/addons/mail/models/mail_link_preview.py b/addons/mail/models/mail_link_preview.py index 07e9c9e0b49..77deb7fa933 100644 --- a/addons/mail/models/mail_link_preview.py +++ b/addons/mail/models/mail_link_preview.py @@ -19,6 +19,7 @@ class LinkPreview(models.Model): source_url = fields.Char('URL', required=True) og_type = fields.Char('Type') og_title = fields.Char('Title') + og_site_name = fields.Char('Site name') og_image = fields.Char('Image') og_description = fields.Text('Description') og_mimetype = fields.Char('MIME type') @@ -97,5 +98,6 @@ class LinkPreview(models.Model): 'og_mimetype': preview.og_mimetype, 'og_title': preview.og_title, 'og_type': preview.og_type, + 'og_site_name': preview.og_site_name, 'source_url': preview.source_url, } for preview in self] diff --git a/addons/mail/static/src/core/common/link_preview.xml b/addons/mail/static/src/core/common/link_preview.xml index 5de0fdf42bb..9f54a542770 100644 --- a/addons/mail/static/src/core/common/link_preview.xml +++ b/addons/mail/static/src/core/common/link_preview.xml @@ -21,6 +21,7 @@
+

diff --git a/addons/mail/static/src/core/common/link_preview_model.js b/addons/mail/static/src/core/common/link_preview_model.js index 66290aa9f68..801e7e95c3a 100644 --- a/addons/mail/static/src/core/common/link_preview_model.js +++ b/addons/mail/static/src/core/common/link_preview_model.js @@ -39,6 +39,8 @@ export class LinkPreview extends Record { /** @type {string} */ og_type; /** @type {string} */ + og_site_name; + /** @type {string} */ source_url; get imageUrl() { @@ -56,6 +58,7 @@ export class LinkPreview extends Record { get isCard() { return !this.isImage && !this.isVideo; } + } LinkPreview.register(); diff --git a/addons/mail/tests/test_link_preview.py b/addons/mail/tests/test_link_preview.py index 790ea367164..b273eb8c890 100644 --- a/addons/mail/tests/test_link_preview.py +++ b/addons/mail/tests/test_link_preview.py @@ -115,6 +115,7 @@ class TestLinkPreview(MailCommon): 'og_mimetype': False, 'og_title': self.og_title, 'og_type': False, + 'og_site_name': False, 'source_url': self.source_url, }] for link_preview in message.link_preview_ids } @@ -134,6 +135,7 @@ class TestLinkPreview(MailCommon): 'og_mimetype': None, 'og_title': self.og_title, 'og_type': None, + 'og_site_name': None, 'source_url': self.source_url, }, { @@ -142,6 +144,7 @@ class TestLinkPreview(MailCommon): 'og_mimetype': None, 'og_title': self.title, 'og_type': None, + 'og_site_name': None, 'source_url': self.source_url, }, { diff --git a/addons/mail/tools/link_preview.py b/addons/mail/tools/link_preview.py index 7bc04752c79..75bc595c103 100644 --- a/addons/mail/tools/link_preview.py +++ b/addons/mail/tools/link_preview.py @@ -73,6 +73,7 @@ def get_link_preview_from_html(url, response): return False og_description = tree.xpath('//meta[@property="og:description"]/@content') og_type = tree.xpath('//meta[@property="og:type"]/@content') + og_site_name = tree.xpath('//meta[@property="og:site_name"]/@content') og_image = tree.xpath('//meta[@property="og:image"]/@content') og_mimetype = tree.xpath('//meta[@property="og:image:type"]/@content') return { @@ -81,5 +82,6 @@ def get_link_preview_from_html(url, response): 'og_mimetype': og_mimetype[0] if og_mimetype else None, 'og_title': og_title, 'og_type': og_type[0] if og_type else None, + 'og_site_name': og_site_name[0] if og_site_name else None, 'source_url': url, } diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml index dd786494a70..58f7207040b 100644 --- a/addons/portal/views/portal_templates.xml +++ b/addons/portal/views/portal_templates.xml @@ -35,6 +35,28 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/project/controllers/portal.py b/addons/project/controllers/portal.py index c6c8cda472f..62cbca06ea4 100644 --- a/addons/project/controllers/portal.py +++ b/addons/project/controllers/portal.py @@ -46,6 +46,7 @@ class ProjectCustomerPortal(CustomerPortal): pager=pager, project=project, task_url=f'projects/{project.id}/task', + preview_object=project, ) if not groupby: @@ -255,6 +256,7 @@ class ProjectCustomerPortal(CustomerPortal): 'user': request.env.user, 'project_accessible': project_accessible, 'task_link_section': [], + 'preview_object': task, } values = self._get_page_view_values(task, access_token, values, history, False, **kwargs) diff --git a/addons/project/views/project_portal_project_task_templates.xml b/addons/project/views/project_portal_project_task_templates.xml index 2c95b5628fe..b10d0f170fa 100644 --- a/addons/project/views/project_portal_project_task_templates.xml +++ b/addons/project/views/project_portal_project_task_templates.xml @@ -120,7 +120,29 @@ + + + +