diff --git a/addons/mass_mailing/__manifest__.py b/addons/mass_mailing/__manifest__.py index dc7d96a7e4cab..e022495878815 100644 --- a/addons/mass_mailing/__manifest__.py +++ b/addons/mass_mailing/__manifest__.py @@ -158,6 +158,9 @@ ('include', 'web_editor.assets_snippets_menu'), 'mass_mailing/static/src/js/snippets.editor.js', 'mass_mailing/static/src/xml/mass_mailing.editor.xml', + 'mass_mailing/static/src/js/snippets.options.xml', + 'mass_mailing/static/src/js/snippets.registry.js', + 'mass_mailing/static/src/snippets/s_hr/options.xml', ], 'web.assets_frontend': [ 'mass_mailing/static/src/js/tours/**/*', diff --git a/addons/mass_mailing/static/src/js/mass_mailing_snippets.js b/addons/mass_mailing/static/src/js/mass_mailing_snippets.js index fede7a6f9cbf6..370fda6d12749 100644 --- a/addons/mass_mailing/static/src/js/mass_mailing_snippets.js +++ b/addons/mass_mailing/static/src/js/mass_mailing_snippets.js @@ -1,7 +1,9 @@ /** @odoo-module **/ -import options from "@web_editor/js/editor/snippets.options"; +import options from "@web_editor/js/editor/snippets.options.legacy"; import { loadImage } from "@web_editor/js/editor/image_processing"; +import { BackgroundImage, ImageTools, registerBackgroundOptions } from "@web_editor/js/editor/snippets.options"; +import { updateOption } from "@web_editor/js/editor/snippets.registry"; const SelectUserValueWidget = options.userValueWidgetsRegistry['we-select']; import weUtils from "@web_editor/js/common/utils"; import { @@ -11,6 +13,7 @@ import { transformFontFamilySelector, } from "@mass_mailing/js/mass_mailing_design_constants"; import { isCSSColor, normalizeCSSColor } from "@web/core/utils/colors"; +import { registerMassMailingOption } from "./snippets.registry"; //-------------------------------------------------------------------------- @@ -19,17 +22,32 @@ import { isCSSColor, normalizeCSSColor } from "@web/core/utils/colors"; // Adding compatibility for the outlook compliance of mailings. // Commit of such compatibility : a14f89c8663c9cafecb1cc26918055e023ecbe42 -options.registry.MassMailingBackgroundImage = options.registry.BackgroundImage.extend({ - start: function () { - this._super(); +class MassMailingBackgroundImage extends BackgroundImage { + /** + * @override + */ + willStart() { + super.willStart(...arguments); const $table_target = this.$target.find('table:first'); if ($table_target.length) { this.$target = $table_target; } } +} +// Allow changing background images in Masonry and Cover +registerBackgroundOptions("MassMailingBackgroundImage", { + selector: ".s_masonry_block .row > div, .s_cover .oe_img_bg", + withImages: true, + withVideos: false, + withShapes: false, + }, + (name) => name === "toggler" && "mass_mailing.snippet_options_background_options" +); +updateOption("MassMailingBackgroundImage-bgToggler", { + Class: () => MassMailingBackgroundImage, }); -options.registry.MassMailingImageTools = options.registry.ImageTools.extend({ +class MassMailingImageTools extends ImageTools { //-------------------------------------------------------------------------- // Private @@ -48,13 +66,12 @@ options.registry.MassMailingImageTools = options.registry.ImageTools.extend({ const colorValue = window.getComputedStyle(tempEl).getPropertyValue("background-color").trim(); tempEl.parentNode.removeChild(tempEl); return normalizeCSSColor(colorValue).replace(/"/g, "'"); - }, - + } /** * @override */ async computeShape(svgText, img) { - const dataURL = await this._super(...arguments); + const dataURL = await super.computeShape(...arguments); const image = await loadImage(dataURL); const canvas = document.createElement("canvas"); const imgFilename = (img.dataset.originalSrc.split("/").pop()).split(".")[0]; @@ -65,7 +82,16 @@ options.registry.MassMailingImageTools = options.registry.ImageTools.extend({ canvas.getContext("2d").drawImage(image, 0, 0, image.width, image.height); return canvas.toDataURL(`image/png`, 1.0); } -}); + /** + * @override + */ + _relocateWeightEl() {} +} +registerMassMailingOption("MassMailingImageTools", { + Class: MassMailingImageTools, + template: "mass_mailing.ImageTools", + selector: "img", +}, { sequence: 49 }); options.userValueWidgetsRegistry['we-fontfamilypicker'] = SelectUserValueWidget.extend({ /** diff --git a/addons/mass_mailing/static/src/js/snippets.options.xml b/addons/mass_mailing/static/src/js/snippets.options.xml new file mode 100644 index 0000000000000..f7975a1e86bb9 --- /dev/null +++ b/addons/mass_mailing/static/src/js/snippets.options.xml @@ -0,0 +1,90 @@ + + + + + + + + +
+
+
+
+ + + + + + + + Border + + + + + + + + + + + + + + true + + + + + + + + + + + + + Left + Center + Right + + + + Border + + + + + + + + + + + + + + + + diff --git a/addons/mass_mailing/static/src/js/snippets.registry.js b/addons/mass_mailing/static/src/js/snippets.registry.js new file mode 100644 index 0000000000000..71d4a83bfe6ca --- /dev/null +++ b/addons/mass_mailing/static/src/js/snippets.registry.js @@ -0,0 +1,21 @@ +import { registerOption } from "@web_editor/js/editor/snippets.registry"; + + +export function registerMassMailingOption(name, def, options) { + if (!def.module) { + def.module = "mass_mailing"; + } + return registerOption(name, def, options); +} + +registerMassMailingOption("MassMailingIconTools", { + template: "mass_mailing.IconTools", + selector: "span.fa, i.fa, img", + exclude: "[data-oe-type='image'] > img, [data-oe-xpath]", +}); + +registerMassMailingOption("MassMailingHrOptions", { + template: "mass_mailing.s_hr_options", + selector: ".s_hr", + target: "hr", +}); diff --git a/addons/mass_mailing/static/src/snippets/s_hr/options.xml b/addons/mass_mailing/static/src/snippets/s_hr/options.xml new file mode 100644 index 0000000000000..6fcd5bf634c47 --- /dev/null +++ b/addons/mass_mailing/static/src/snippets/s_hr/options.xml @@ -0,0 +1,22 @@ + + + + + + Border + + + + 25% + 50% + 75% + 100% + + + + + + + + + diff --git a/addons/mass_mailing/static/src/snippets/s_masonry_block/options.js b/addons/mass_mailing/static/src/snippets/s_masonry_block/options.js index f9d5a83076497..ddfcf7ab9d9d7 100644 --- a/addons/mass_mailing/static/src/snippets/s_masonry_block/options.js +++ b/addons/mass_mailing/static/src/snippets/s_masonry_block/options.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import options from "@web_editor/js/editor/snippets.options"; +import options from "@web_editor/js/editor/snippets.options.legacy"; options.registry.MasonryLayout = options.registry.SelectTemplate.extend({ /** diff --git a/addons/mass_mailing/static/src/snippets/s_media_list/options.js b/addons/mass_mailing/static/src/snippets/s_media_list/options.js index 66030ae3bbf32..e732152348c76 100644 --- a/addons/mass_mailing/static/src/snippets/s_media_list/options.js +++ b/addons/mass_mailing/static/src/snippets/s_media_list/options.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import options from "@web_editor/js/editor/snippets.options"; +import options from "@web_editor/js/editor/snippets.options.legacy"; options.registry.MediaItemLayout = options.Class.extend({ diff --git a/addons/mass_mailing/static/src/snippets/s_rating/options.js b/addons/mass_mailing/static/src/snippets/s_rating/options.js index 138f57ae81132..bf7121b16284b 100644 --- a/addons/mass_mailing/static/src/snippets/s_rating/options.js +++ b/addons/mass_mailing/static/src/snippets/s_rating/options.js @@ -1,7 +1,7 @@ /** @odoo-module **/ import { MediaDialog } from "@web_editor/components/media_dialog/media_dialog"; -import options from "@web_editor/js/editor/snippets.options"; +import options from "@web_editor/js/editor/snippets.options.legacy"; options.registry.Rating = options.Class.extend({ /** diff --git a/addons/mass_mailing/static/src/snippets/s_showcase/options.js b/addons/mass_mailing/static/src/snippets/s_showcase/options.js index 296ad494d2e3e..d8be3637a6e92 100644 --- a/addons/mass_mailing/static/src/snippets/s_showcase/options.js +++ b/addons/mass_mailing/static/src/snippets/s_showcase/options.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import options from "@web_editor/js/editor/snippets.options"; +import options from "@web_editor/js/editor/snippets.options.legacy"; options.registry.Showcase = options.Class.extend({ /** diff --git a/addons/mass_mailing/views/snippets/s_alert.xml b/addons/mass_mailing/views/snippets/s_alert.xml index bc283760ae47c..1d327167c15cc 100644 --- a/addons/mass_mailing/views/snippets/s_alert.xml +++ b/addons/mass_mailing/views/snippets/s_alert.xml @@ -35,9 +35,11 @@ data-color-prefix="alert-"/>
- + +
diff --git a/addons/mass_mailing/views/snippets/s_hr.xml b/addons/mass_mailing/views/snippets/s_hr.xml index 1b1444411188c..e2810f381beb2 100644 --- a/addons/mass_mailing/views/snippets/s_hr.xml +++ b/addons/mass_mailing/views/snippets/s_hr.xml @@ -10,28 +10,6 @@ - - Hr 000 SCSS web.assets_frontend diff --git a/addons/mass_mailing/views/snippets_themes.xml b/addons/mass_mailing/views/snippets_themes.xml index da168857abe73..b253b9fd93291 100644 --- a/addons/mass_mailing/views/snippets_themes.xml +++ b/addons/mass_mailing/views/snippets_themes.xml @@ -227,45 +227,10 @@ - - - + + +