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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ project.task_link_preview_front_end
+
+
+
+
+ project.task_link_preview_portal_layout
+