diff options
Diffstat (limited to 'addons/web_editor/static/src/js/editor/snippets.options.js')
| -rw-r--r-- | addons/web_editor/static/src/js/editor/snippets.options.js | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/addons/web_editor/static/src/js/editor/snippets.options.js b/addons/web_editor/static/src/js/editor/snippets.options.js index 841383c589d..8d5e385408d 100644 --- a/addons/web_editor/static/src/js/editor/snippets.options.js +++ b/addons/web_editor/static/src/js/editor/snippets.options.js @@ -3228,11 +3228,7 @@ const ImageHandlerOption = SnippetOptionWidget.extend({ * @override */ _computeVisibility() { - const img = this._getImg(); - if (!['image/jpeg', 'image/png'].includes(img.dataset.mimetype)) { - return false; - } - const src = img.getAttribute('src'); + const src = this._getImg().getAttribute('src'); return src && src !== '/'; }, /** @@ -3273,23 +3269,35 @@ const ImageHandlerOption = SnippetOptionWidget.extend({ * @override */ async _renderCustomXML(uiFragment) { - if (!this.originalSrc) { + const isLocalURL = href => new URL(href, window.location.origin).origin === window.location.origin; + + const img = this._getImg(); + if (!this.originalSrc || !['image/png', 'image/jpeg'].includes(img.dataset.mimetype)) { return [...uiFragment.childNodes].forEach(node => { if (node.matches('.o_we_external_warning')) { node.classList.remove('d-none'); + if (isLocalURL(img.getAttribute('src'))) { + const title = node.querySelector('we-title'); + title.textContent = ` ${_t("Quality options unavailable")}`; + $(title).prepend('<i class="fa fa-warning" />'); + if (img.dataset.mimetype) { + title.setAttribute('title', _t("Only PNG and JPEG images support quality options and image filtering")); + } else { + title.setAttribute('title', _t("Due to technical limitations, you can only change optimization settings on this image by choosing it again in the media-dialog or reuploading it (double click on the image)")); + } + } } else { node.remove(); } }); } - const img = this._getImg(); const $select = $(uiFragment).find('we-select[data-name=width_select_opt]'); (await this._computeAvailableWidths()).forEach(([value, label]) => { $select.append(`<we-button data-select-width="${value}">${label}</we-button>`); }); - const qualityRange = uiFragment.querySelector('we-range'); + if (img.dataset.mimetype !== 'image/jpeg') { - qualityRange.remove(); + uiFragment.querySelector('we-range[data-set-quality]').remove(); } }, /** |
