diff options
Diffstat (limited to 'addons/web_editor/static/src')
| -rw-r--r-- | addons/web_editor/static/src/js/editor/summernote.js | 16 | ||||
| -rw-r--r-- | addons/web_editor/static/src/scss/web_editor.variables.scss | 2 | ||||
| -rw-r--r-- | addons/web_editor/static/src/xml/editor.xml | 5 |
3 files changed, 19 insertions, 4 deletions
diff --git a/addons/web_editor/static/src/js/editor/summernote.js b/addons/web_editor/static/src/js/editor/summernote.js index a2f0f6a308f..36f5becce06 100644 --- a/addons/web_editor/static/src/js/editor/summernote.js +++ b/addons/web_editor/static/src/js/editor/summernote.js @@ -1936,6 +1936,15 @@ $.summernote.pluginEvents.formatBlock = function (event, editor, layoutInfo, sTa if (!r) { return; } + // select content since container (that firefox selects) may be removed + if (r.so === 0) { + r.sc = dom.firstChild(r.sc); + } + if (dom.nodeLength(r.ec) >= r.eo) { + r.ec = dom.lastChild(r.ec); + r.eo = dom.nodeLength(r.ec); + } + r = range.create(r.sc, r.so, r.ec, r.eo); r.reRange().select(); if (sTagName === "blockquote" || sTagName === "pre") { @@ -1949,6 +1958,10 @@ $.summernote.pluginEvents.formatBlock = function (event, editor, layoutInfo, sTa for (var i=0; i<nodes.length; i++) { if (dom.isBR(nodes[i]) || (dom.isText(nodes[i]) && dom.isVisibleText(nodes[i])) || dom.isB(nodes[i]) || dom.isU(nodes[i]) || dom.isS(nodes[i]) || dom.isI(nodes[i]) || dom.isFont(nodes[i])) { var ancestor = dom.ancestor(nodes[i], isFormatNode); + if ($(ancestor).parent().is('blockquote')) { + // firefox may wrap formatting block in blockquote + $(ancestor).unwrap(); + } if (!ancestor) { dom.wrap(nodes[i], sTagName); } else if (ancestor.tagName.toLowerCase() !== sTagName) { @@ -2272,7 +2285,8 @@ options.onCreateLink = function (sLinkUrl) { // pass } else if (sLinkUrl.indexOf('@') !== -1 && sLinkUrl.indexOf(':') === -1) { sLinkUrl = 'mailto:' + sLinkUrl; - } else if (sLinkUrl.indexOf('://') === -1 && sLinkUrl.indexOf('/') !== 0 && sLinkUrl.indexOf('#') !== 0) { + } else if (sLinkUrl.indexOf('://') === -1 && sLinkUrl[0] !== '/' + && sLinkUrl[0] !== '#' && sLinkUrl.slice(0, 2) !== '${') { sLinkUrl = 'http://' + sLinkUrl; } return sLinkUrl; diff --git a/addons/web_editor/static/src/scss/web_editor.variables.scss b/addons/web_editor/static/src/scss/web_editor.variables.scss index 6c4336581a9..9bb6b705c8d 100644 --- a/addons/web_editor/static/src/scss/web_editor.variables.scss +++ b/addons/web_editor/static/src/scss/web_editor.variables.scss @@ -71,7 +71,7 @@ $o-we-switch-inactive-color: $o-we-color-paper !default; color: $o-we-color-divider; .text-muted { - color: $o-we-color-text-normal; + color: $o-we-color-text-normal !important; } } diff --git a/addons/web_editor/static/src/xml/editor.xml b/addons/web_editor/static/src/xml/editor.xml index 85cf336130d..631bd069e8b 100644 --- a/addons/web_editor/static/src/xml/editor.xml +++ b/addons/web_editor/static/src/xml/editor.xml @@ -81,11 +81,12 @@ <!-- Image choosing part of the Media Dialog --> <t t-name="web_editor.dialog.image"> + <t t-set="iframeName" t-value="_.uniqueId('fileframe-')"/> <form class="form-inline" method="POST" action="/web_editor/attachment/add" enctype="multipart/form-data" - target="fileframe"> + t-att-target="iframeName"> <input type="hidden" name="csrf_token" t-att-value="csrf_token"/> <input type="hidden" name="filters" t-att-value="widget.firstFilters.join('_')"/> <input t-if="widget.options.res_id" type="hidden" name="res_id" t-att-value="widget.options.res_id"/> @@ -119,7 +120,7 @@ <div class="existing-attachments"> <t t-call="web_editor.dialog.image.existing"/> </div> - <iframe class="d-none" name="fileframe"/> + <iframe class="d-none" t-att-name="iframeName"/> </form> </t> <t t-name="web_editor.dialog.image.existing"> |
