diff options
| author | Christophe Matthieu <chm@odoo.com> | 2014-12-17 10:33:16 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-01-05 10:17:10 +0100 |
| commit | 685d447892c4b2d6548c7e09fda9d4bd4ae5b5b9 (patch) | |
| tree | 13023d717027264673aa5f34e9d72957882b1136 /addons/website/static/lib/summernote/src/js | |
| parent | 1596e45e8174cd736d4f7c78f85ec76a8e34888d (diff) | |
[IMP] summernote: change lib for overwrite method
Diffstat (limited to 'addons/website/static/lib/summernote/src/js')
7 files changed, 96 insertions, 45 deletions
diff --git a/addons/website/static/lib/summernote/src/js/EventHandler.js b/addons/website/static/lib/summernote/src/js/EventHandler.js index 5660b633509..2dba3357d06 100644 --- a/addons/website/static/lib/summernote/src/js/EventHandler.js +++ b/addons/website/static/lib/summernote/src/js/EventHandler.js @@ -248,6 +248,13 @@ define([ } }; + this.commands = commands; // odoo change for overwrite + this.editor = editor; // odoo change for overwrite + this.toolbar = toolbar; // odoo change for overwrite + this.popover = popover; // odoo change for overwrite + this.handle = handle; // odoo change for overwrite + this.dialog = dialog; // odoo change for overwrite + var hMousedown = function (event) { //preventDefault Selection for FF, IE8+ if (dom.isImg(event.target)) { @@ -564,6 +571,19 @@ define([ if (keyName) { aKey.push(keyName); } var eventName = keyMap[aKey.join('+')]; + + // odoo change: add visible event to overwrite the browser comportment + var keycode = event.keyCode; + if (!eventName && + !event.ctrlKey && !event.metaKey && ( // special code/command + (keycode > 47 && keycode < 58) || // number keys + keycode == 32 || keycode == 13 || // spacebar & return + (keycode > 64 && keycode < 91) || // letter keys + (keycode > 95 && keycode < 112) || // numpad keys + (keycode > 185 && keycode < 193) || // ;=,-./` (in order) + (keycode > 218 && keycode < 223))) { // [\]' (in order)) + eventName = 'visible'; + } if (eventName) { event.preventDefault(); diff --git a/addons/website/static/lib/summernote/src/js/Renderer.js b/addons/website/static/lib/summernote/src/js/Renderer.js index 5b1cc794c15..2f27901e875 100644 --- a/addons/website/static/lib/summernote/src/js/Renderer.js +++ b/addons/website/static/lib/summernote/src/js/Renderer.js @@ -434,6 +434,9 @@ define([ '</div>'; }; + this.tplButtonInfo = tplButtonInfo; // odoo change for overwrite + this.tplPopovers = tplPopovers; // odoo change for overwrite + var tplHandles = function () { return '<div class="note-handle">' + '<div class="note-control-selection">' + @@ -691,6 +694,8 @@ define([ }); }; + this.createPalette = createPalette; // odoo change for overwrite + /** * create summernote layout (air mode) * @@ -711,12 +716,12 @@ define([ var body = document.body; // create Popover - var $popover = $(tplPopovers(langInfo, options)); + var $popover = $(this.tplPopovers(langInfo, options)); // odoo change for overwrite $popover.addClass('note-air-layout'); $popover.attr('id', 'note-popover-' + id); $popover.appendTo(body); createTooltip($popover, keyMap); - createPalette($popover, options); + this.createPalette($popover, options); // odoo change for overwrite // create Handle var $handle = $(tplHandles()); @@ -793,12 +798,12 @@ define([ var $toolbar = $(toolbarHTML).prependTo($editor); var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; - createPalette($toolbar, options); + this.createPalette($toolbar, options); // odoo change for overwrite createTooltip($toolbar, keyMap, 'bottom'); //05. create Popover - var $popover = $(tplPopovers(langInfo, options)).prependTo($editor); - createPalette($popover, options); + var $popover = $(this.tplPopovers(langInfo, options)).prependTo($editor); // odoo change for overwrite + this.createPalette($popover, options); // odoo change for overwrite createTooltip($popover, keyMap); //06. handle(control selection, ...) diff --git a/addons/website/static/lib/summernote/src/js/core/range.js b/addons/website/static/lib/summernote/src/js/core/range.js index 785c063f48b..85a659bbd1b 100644 --- a/addons/website/static/lib/summernote/src/js/core/range.js +++ b/addons/website/static/lib/summernote/src/js/core/range.js @@ -353,42 +353,42 @@ define([ * delete contents on range * @return {WrappedRange} */ - this.deleteContents = function () { - if (this.isCollapsed()) { - return this; - } - - var rng = this.splitText(); - var nodes = rng.nodes(null, { - fullyContains: true - }); - - var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { - return !list.contains(nodes, point.node); - }); - - var emptyParents = []; - $.each(nodes, function (idx, node) { - // find empty parents - var parent = node.parentNode; - if (point.node !== parent && dom.nodeLength(parent) === 1) { - emptyParents.push(parent); - } - dom.remove(node, false); - }); - - // remove empty parents - $.each(emptyParents, function (idx, node) { - dom.remove(node, false); - }); - - return new WrappedRange( - point.node, - point.offset, - point.node, - point.offset - ); - }; + // this.deleteContents = function () { + // if (this.isCollapsed()) { + // return this; + // } + + // var rng = this.splitText(); + // var nodes = rng.nodes(null, { + // fullyContains: true + // }); + + // var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { + // return !list.contains(nodes, point.node); + // }); + + // var emptyParents = []; + // $.each(nodes, function (idx, node) { + // // find empty parents + // var parent = node.parentNode; + // if (point.node !== parent && dom.nodeLength(parent) === 1) { + // emptyParents.push(parent); + // } + // dom.remove(node, false); + // }); + + // // remove empty parents + // $.each(emptyParents, function (idx, node) { + // dom.remove(node, false); + // }); + + // return new WrappedRange( + // point.node, + // point.offset, + // point.node, + // point.offset + // ); + // }; /** * makeIsOn: return isOn(pred) function @@ -545,6 +545,9 @@ define([ }; return { + + WrappedRange: WrappedRange, // odoo change for overwrite + /** * create Range Object From arguments or Browser Selection * @@ -563,7 +566,7 @@ define([ // Firefox: returns entire body as range on initialization. We won't never need it. return null; } - + var nativeRng = selection.getRangeAt(0); sc = nativeRng.startContainer; so = nativeRng.startOffset; @@ -591,6 +594,16 @@ define([ ec = endPoint.cont; eo = endPoint.offset; } + + /* fir for some browser like PhantomJS + * if you select a span with PhantomJS put the carret on the last char of the previous text node + * instead of put the caret on the parent node with the the ofset to target the node + */ + if (sc.nodeType === 3 && sc.nextSibling && sc.nextSibling.tagName && dom.nodeLength(sc) === so) { + so = dom.listPrev(ec).length-1; + sc = sc.parentNode; + } + } else if (arguments.length === 2) { //collapsed ec = sc; eo = so; diff --git a/addons/website/static/lib/summernote/src/js/editing/Editor.js b/addons/website/static/lib/summernote/src/js/editing/Editor.js index 35af842afe8..1a830b8bc83 100644 --- a/addons/website/static/lib/summernote/src/js/editing/Editor.js +++ b/addons/website/static/lib/summernote/src/js/editing/Editor.js @@ -22,6 +22,11 @@ define([ var typing = new Typing(); var bullet = new Bullet(); + this.style = style; // odoo change for overwrite + this.table = table; // odoo change for overwrite + this.typing = typing; // odoo change for overwrite + this.bullet = bullet; // odoo change for overwrite + /** * create range */ diff --git a/addons/website/static/lib/summernote/src/js/module/Popover.js b/addons/website/static/lib/summernote/src/js/module/Popover.js index 29d44666a23..ec40dc6e7d4 100644 --- a/addons/website/static/lib/summernote/src/js/module/Popover.js +++ b/addons/website/static/lib/summernote/src/js/module/Popover.js @@ -9,6 +9,8 @@ define([ var Popover = function () { var button = new Button(); + this.button = button; // odoo change for overwrite + /** * returns position from placeholder * @param {Node} placeholder diff --git a/addons/website/static/lib/summernote/src/js/module/Toolbar.js b/addons/website/static/lib/summernote/src/js/module/Toolbar.js index 5ff172012ca..832b7c4c561 100644 --- a/addons/website/static/lib/summernote/src/js/module/Toolbar.js +++ b/addons/website/static/lib/summernote/src/js/module/Toolbar.js @@ -8,6 +8,8 @@ define([ var Toolbar = function () { var button = new Button(); + this.button = button; // odoo change for overwrite + this.update = function ($toolbar, styleInfo) { button.update($toolbar, styleInfo); }; diff --git a/addons/website/static/lib/summernote/src/js/summernote.js b/addons/website/static/lib/summernote/src/js/summernote.js index d9122a4ff63..791a9452e85 100644 --- a/addons/website/static/lib/summernote/src/js/summernote.js +++ b/addons/website/static/lib/summernote/src/js/summernote.js @@ -2,8 +2,10 @@ define([ 'summernote/core/agent', 'summernote/core/dom', 'summernote/core/range', 'summernote/settings', - 'summernote/EventHandler', 'summernote/Renderer' -], function (agent, dom, range, settings, EventHandler, Renderer) { + 'summernote/EventHandler', 'summernote/Renderer', + 'summernote/core/list', // odoo change for overwrite + 'summernote/core/key' // odoo change for overwrite +], function (agent, dom, range, settings, EventHandler, Renderer, list, key) { // odoo change for overwrite // jQuery namespace for summernote $.summernote = $.summernote || {}; @@ -19,7 +21,9 @@ define([ core: { agent: agent, dom: dom, - range: range + range: range, + list: list, // odoo change for overwrite + key: key // odoo change for overwrite }, pluginEvents: {} }); |
