[FIX] web_editor: Evoid the risk of deleting the summernote library

For iframes, we need to inject summernote because there are references
to "document" in it. When loading the iframe, if it is canceled, there
is a risk that the library is erased and that it breaks the field html.
We must also slightly modify the library to prevent it from making
changes to the library of the main "window".
This commit is contained in:
Gorash
2019-03-04 08:33:53 +00:00
parent 30bbfff8b4
commit 972a1c9920
3 changed files with 6 additions and 8 deletions
@@ -1695,7 +1695,7 @@ var dom = {
isCustomStyleTag: isCustomStyleTag
};
$$1.summernote = $$1.summernote || {
$$1.summernote = {
lang: {}
};
$$1.extend($$1.summernote.lang, {
@@ -13,6 +13,8 @@ $.fn.summernote = function () {
var summernote = this[0].ownerDocument.defaultView._fnSummenoteSlave || _fnSummernoteMaster;
return summernote.apply(this, arguments);
};
window._fnSummernoteMaster = $.fn.summernote;
window._summernoteMaster = _summernoteMaster;
/**
* Add option (inIframe) to load Wysiwyg in an iframe.
+3 -7
View File
@@ -23,19 +23,15 @@
<div id="iframe_target" style="height: calc(100vh - 6px);"/>
<script type="text/javascript">
window.$ = window.jQuery = window.top.jQuery;
var _summernoteMaster = $.summernote;
var _fnSummernoteMaster = $.fn.summernote;
delete $.summernote;
delete $.fn.summernote;
</script>
<script type="text/javascript" src="/web_editor/static/lib/summernote/summernote.js"/>
<script type="text/javascript">
window._summernoteSlave = $.summernote;
window._summernoteSlave.iframe = true;
window._summernoteSlave.lang = _summernoteMaster.lang;
window._summernoteSlave.lang = window.top._summernoteMaster.lang;
window._fnSummenoteSlave = $.fn.summernote;
$.summernote = _summernoteMaster;
$.fn.summernote = _fnSummernoteMaster;
$.summernote = window.top._summernoteMaster;
$.fn.summernote = window.top._fnSummernoteMaster;
if (window.top.<t t-esc="updateIframeId"/>) {
window.top.<t t-esc="updateIframeId"/>(<t t-esc="avoidDoubleLoad"/>);
}