diff --git a/addons/website_sale/static/src/js/website_sale.editor.js b/addons/website_sale/static/src/js/website_sale.editor.js
index 020f7c35507..dc17876942a 100644
--- a/addons/website_sale/static/src/js/website_sale.editor.js
+++ b/addons/website_sale/static/src/js/website_sale.editor.js
@@ -56,6 +56,7 @@ var options = require('web_editor.snippets.options');
var publicWidget = require('web.public.widget');
const Wysiwyg = require('web_editor.wysiwyg');
const {qweb, _t} = require('web.core');
+const {Markup} = require('web.utils');
Wysiwyg.include({
custom_events: Object.assign(Wysiwyg.prototype.custom_events, {
@@ -79,7 +80,10 @@ Wysiwyg.include({
fields: ['id', 'html', 'bg_color', 'text_color', 'html_class'],
});
}
- this.ribbons = Object.fromEntries(ribbons.map(ribbon => [ribbon.id, ribbon]));
+ this.ribbons = Object.fromEntries(ribbons.map(ribbon => {
+ ribbon.html = Markup(ribbon.html);
+ return [ribbon.id, ribbon];
+ }));
this.originalRibbons = Object.assign({}, this.ribbons);
this.productTemplatesRibbons = [];
this.deletedRibbonClasses = '';
diff --git a/addons/website_sale/static/src/js/website_sale_video_field_preview.js b/addons/website_sale/static/src/js/website_sale_video_field_preview.js
index bd40b3b993e..c9641c1bb5c 100644
--- a/addons/website_sale/static/src/js/website_sale_video_field_preview.js
+++ b/addons/website_sale/static/src/js/website_sale_video_field_preview.js
@@ -4,6 +4,7 @@ odoo.define('website_sale.video_field_preview', function (require) {
var AbstractField = require('web.AbstractField');
var core = require('web.core');
+const {Markup} = require('web.utils');
var fieldRegistry = require('web.field_registry');
var QWeb = core.qweb;
@@ -16,7 +17,7 @@ var FieldVideoPreview = AbstractField.extend({
_render: function () {
this.$el.html(QWeb.render('productVideo', {
- embedCode: this.value,
+ embedCode: Markup(this.value),
}));
},
});
diff --git a/addons/website_sale/static/src/snippets/s_products_searchbar/000.js b/addons/website_sale/static/src/snippets/s_products_searchbar/000.js
index 2aaafca20b6..1cc3f00c217 100644
--- a/addons/website_sale/static/src/snippets/s_products_searchbar/000.js
+++ b/addons/website_sale/static/src/snippets/s_products_searchbar/000.js
@@ -5,6 +5,7 @@ const concurrency = require('web.concurrency');
const publicWidget = require('web.public.widget');
const { qweb } = require('web.core');
+const { Markup } = require('web.utils');
/**
* @todo maybe the custom autocomplete logic could be extract to be reusable
@@ -56,8 +57,8 @@ publicWidget.registry.productsSearchBar = publicWidget.Widget.extend({
/**
* @private
*/
- _fetch: function () {
- return this._rpc({
+ async _fetch() {
+ const res = await this._rpc({
route: '/shop/products/autocomplete',
params: {
'term': this.$input.val(),
@@ -70,6 +71,10 @@ publicWidget.registry.productsSearchBar = publicWidget.Widget.extend({
},
},
});
+ if (this.displayDescription) {
+ res.products.forEach(p => {p.description_sale = Markup(p.description_sale);});
+ }
+ return res;
},
/**
* @private
diff --git a/addons/website_sale/static/src/xml/website_sale.xml b/addons/website_sale/static/src/xml/website_sale.xml
index 2b9e9e9a169..2c8fd7504b0 100644
--- a/addons/website_sale/static/src/xml/website_sale.xml
+++ b/addons/website_sale/static/src/xml/website_sale.xml
@@ -4,7 +4,7 @@