summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/website.editor.js
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2015-01-20 01:16:57 +0100
committerChristophe Matthieu <chm@odoo.com>2015-01-23 12:14:14 +0100
commitdb81c72dfd378c8c62ae3e5d5890fcb2f37685aa (patch)
tree50f7a42ddc04342510b2a8341781a87785eda187 /addons/website/static/src/js/website.editor.js
parent5bec4b899633e7a2143bbbdcaf7592a485aec75f (diff)
[IMP] website editor: 'active' link when click to allow the edition of the last and first char
Diffstat (limited to 'addons/website/static/src/js/website.editor.js')
-rw-r--r--addons/website/static/src/js/website.editor.js44
1 files changed, 39 insertions, 5 deletions
diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js
index f3dd2b1f030..a1c87926015 100644
--- a/addons/website/static/src/js/website.editor.js
+++ b/addons/website/static/src/js/website.editor.js
@@ -145,6 +145,9 @@ define(['summernote/summernote'], function () {
$linkPopover.find('.popover-content').append($airPopover.find(".note-history").clone());
+ $linkPopover.find('button[data-event="showLinkDialog"] i').attr("class", "fa fa-link");
+ $linkPopover.find('button[data-event="unlink"]').before($airPopover.find('button[data-event="showImageDialog"]').clone());
+
//////////////// text/air popover
//// highlight the text format
@@ -482,6 +485,13 @@ define(['summernote/summernote'], function () {
if ($(event.target).closest("#website-top-navbar, .note-popover").length) {
return;
}
+ if ($(event.target).is(":o_editable")) {
+ var a = summernote_ie_fix(event, function (node) { return node.tagName === "A"; });
+ if (a) {
+ range.create().select();
+ }
+ }
+
// don't rerange if simple click
if (initial_data.event) {
var dx = event.clientX - (event.shiftKey ? initial_data.rect.left : initial_data.event.clientX);
@@ -494,13 +504,21 @@ define(['summernote/summernote'], function () {
var remember_selection;
function summernote_mousedown (event) {
history.splitNext();
+
if (!!document.documentMode) {
- summernote_ie_fix(event);
+ summernote_ie_fix(event, function (node) { return node.tagName === "DIV" || node.tagName === "IMG" || (node.dataset && node.dataset.oeModel); });
+ } else if (last_div && event.target !== last_div && last_div.tagName === "A") {
+ summernote_ie_fix(event, function (node) { return node.dataset && node.dataset.oeModel; });
}
+
var r = range.create();
if ($(r ? dom.node(r.sc) : event.srcElement || event.target).closest('#website-top-navbar, #oe_main_menu_navbar, .note-popover, .modal').length) {
if (remember_selection && !$(event.target).is('input, select, label, button, a')) {
- remember_selection.select();
+ try {
+ remember_selection.select();
+ } catch (e) {
+ console.warn(e);
+ }
}
} else if (r && $(dom.node(r.sc)).closest('.o_editable, .note-editable').length) {
remember_selection = r;
@@ -510,12 +528,12 @@ define(['summernote/summernote'], function () {
var last_div;
var last_div_change;
var last_editable;
- function summernote_ie_fix (event) {
+ function summernote_ie_fix (event, pred) {
var editable;
var div;
var node = event.target;
while(node.parentNode) {
- if (!div && (node.tagName === "DIV" || node.tagName === "IMG" || (node.dataset && node.dataset.oeModel))) {
+ if (!div && pred(node)) {
div = node;
}
if(last_div !== node && (node.getAttribute('contentEditable')==='false' || node.className && (node.className.indexOf('o_not_editable') !== -1))) {
@@ -561,6 +579,7 @@ define(['summernote/summernote'], function () {
} else {
last_div_change = null;
}
+ return editable !== div ? div : null;
}
var fn_attach = eventHandler.attach;
@@ -621,7 +640,7 @@ define(['summernote/summernote'], function () {
$(document).off('mousedown', summernote_mousedown);
$(document).off('mouseup', summernote_mouseup);
oLayoutInfo.editor.off("dblclick");
- $(document).off("keydown keyup", reRangeSelectKey);
+ $(document).off("keyup", reRangeSelectKey);
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -877,6 +896,19 @@ define(['summernote/summernote'], function () {
//////////////////////////////////////////////////////////////////////////////////////////////////////////
+ function change_default_bootstrap_animation_to_edit() {
+ var fn_carousel = $.fn.carousel;
+ $.fn.carousel = function () {
+ var res = fn_carousel.apply(this, arguments);
+ // off bootstrap keydown event to remove event.preventDefault()
+ // and allow to change cursor position
+ $(this).off('keydown.bs.carousel');
+ return res;
+ };
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
+
website.no_editor = !!$(document.documentElement).data('editable-no-editor');
website.add_template_file('/website/static/src/xml/website.editor.xml');
@@ -1208,6 +1240,8 @@ define(['summernote/summernote'], function () {
start_edition: function (restart) {
var self = this;
+ change_default_bootstrap_animation_to_edit();
+
this.history = history;
// handler for cancel editor