summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js/editor/snippets.options.js
diff options
context:
space:
mode:
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.js26
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();
}
},
/**