summaryrefslogtreecommitdiff
path: root/addons/website/static
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-12-04 12:55:38 +0100
committerChristophe Simonis <chs@odoo.com>2017-12-04 12:55:38 +0100
commit7b808982a02c7fe0ead85b1e00ceff1c7bf2d2a1 (patch)
treed089f4117ef80ac5e3975d0b5cde086df7799811 /addons/website/static
parent424533f694129b10d78bc5467b9e3d4d104df2f7 (diff)
parent5e38bef5a5ededb28707af44a19caaec2af2d682 (diff)
[MERGE] forward port branch 9.0 up to 5e38bef5a5e
Diffstat (limited to 'addons/website/static')
-rw-r--r--addons/website/static/src/js/website.snippets.animation.js34
1 files changed, 27 insertions, 7 deletions
diff --git a/addons/website/static/src/js/website.snippets.animation.js b/addons/website/static/src/js/website.snippets.animation.js
index d7bdbc7425b..7794614cacf 100644
--- a/addons/website/static/src/js/website.snippets.animation.js
+++ b/addons/website/static/src/js/website.snippets.animation.js
@@ -124,15 +124,35 @@ animation.registry.media_video = animation.Class.extend({
start: function () {
// TODO: this code should be refactored to make more sense and be better
// integrated with Odoo (this refactoring should be done in master).
- this.$target.find('iframe').remove();
- if (!this.$target.has('.media_iframe_video_size').length) {
- var editor = '<div class="css_editable_mode_display">&nbsp;</div>';
- var size = '<div class="media_iframe_video_size">&nbsp;</div>';
- this.$target.html(editor+size);
+ var def = this._super.apply(this, arguments);
+ if (this.$target.children('iframe').length) {
+ // There already is an <iframe/>, do nothing
+ return def;
}
- // rebuilding the iframe, from https://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/
- this.$target.html(this.$target.html()+'<iframe sandbox="allow-scripts allow-same-origin" src="'+_.escape(this.$target.data("oe-expression"))+'" frameborder="0" allowfullscreen="allowfullscreen"></iframe>');
+
+ // Bug fix / compatibility: empty the <div/> element as all information
+ // to rebuild the iframe should have been saved on the <div/> element
+ this.$target.empty();
+
+ // Add extra content for size / edition
+ this.$target.append(
+ '<div class="css_editable_mode_display">&nbsp;</div>' +
+ '<div class="media_iframe_video_size">&nbsp;</div>'
+ );
+
+ // Rebuild the iframe. Depending on version / compatibility / instance,
+ // the src is saved in the 'data-src' attribute or the
+ // 'data-oe-expression' one (the latter is used as a workaround in 10.0
+ // system but should obviously be reviewed in master).
+ this.$target.append($('<iframe/>', {
+ src: _.escape(this.$target.data('oe-expression') || this.$target.data('src')),
+ frameborder: '0',
+ allowfullscreen: 'allowfullscreen',
+ sandbox: 'allow-scripts allow-same-origin', // https://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/
+ }));
+
+ return def;
},
});