From d12974eee38d7560dedd234a9b6ee9ae891fffdb Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 19 Aug 2014 16:19:53 +0200 Subject: [PATCH 1/4] [FIX] website.snippet: can't edit website with firefox; remove firefox attr for media video is edit mode --- addons/website/static/src/js/website.snippets.editor.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index 16304f95d01..8d7b7f1d5b2 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -321,13 +321,14 @@ var self = this; var snipped_event_flag; $("#wrapwrap").on('click', function (event) { - if (snipped_event_flag || !event.srcElement) { + var srcElement = event.srcElement || (event.originalEvent && (event.originalEvent.originalTarget || event.originalEvent.target)); + if (snipped_event_flag || !srcElement) { return; } snipped_event_flag = true; setTimeout(function () {snipped_event_flag = false;}, 0); - var $target = $(event.srcElement); + var $target = $(srcElement); if ($target.parents(".oe_overlay").length) { return; @@ -1537,6 +1538,9 @@ new website.editor.MediaDialog(self, self.element).appendTo(document.body); self.BuildingBlock.make_active(false); } + setTimeout(function () { + self.$target.find(".css_editable_mode_display").removeAttr("_moz_abspos"); + },0); }, }); From 3630c0fc143e58a0da42b1747889e5c65799f136 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 19 Aug 2014 16:20:26 +0200 Subject: [PATCH 2/4] [FIX] tour: display username in log for point of sale module --- addons/web/static/src/js/tour.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/tour.js b/addons/web/static/src/js/tour.js index bebb59d7210..8a08751646e 100644 --- a/addons/web/static/src/js/tour.js +++ b/addons/web/static/src/js/tour.js @@ -323,7 +323,7 @@ var Tour = { }, log: function (message, add_user) { if (add_user) { - var user = $(".navbar .dropdown:has(>.js_usermenu) a:first, .navbar .oe_topbar_name").text(); + var user = $(".navbar .dropdown:has(>.js_usermenu) a:first, .navbar .oe_topbar_name, .pos .username").text(); if (!user && $('a[href*="/login"]')) user = 'Public User'; message += " (" + (user||"").replace(/^\s*|\s*$/g, '') + ")"; } From 37c4bd96c144aac66eede7e9f0b296399b3f854c Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 19 Aug 2014 17:00:19 +0200 Subject: [PATCH 3/4] [FIX] website.snippet: before the save of the view clean_for_save is called. The option marginAndResize (called by twitter) try to bind events on the overlay but the builder don't load the overlay (for time perf). The fix set a default jquery empty div to avoid the error. --- addons/website/static/src/js/website.snippets.editor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index 8d7b7f1d5b2..b6e3919b9d4 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -741,7 +741,7 @@ var styles = this.$target.data("snippet-option-ids") || {}; styles[snippet_id] = this; this.$target.data("snippet-option-ids", styles); - this.$overlay = this.$target.data('overlay'); + this.$overlay = this.$target.data('overlay') || $('
'); this['snippet-option-id'] = snippet_id; var $option = website.snippet.templateOptions[snippet_id].$el; this.$el = $option.find(">li").clone(); From c3d25404773f76a46ff59633ff03d4762f99adf8 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 19 Aug 2014 18:26:12 +0200 Subject: [PATCH 4/4] [FIX] website.editor: must display link information in linkdialox box. Remove /page/ and /page/website. from the needle to search page and apply real url as filter after the search --- addons/website/models/website.py | 16 +++++++++++---- .../website/static/src/js/website.editor.js | 20 +++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index f5df7daeda6..b8c7057757b 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -220,7 +220,10 @@ class website(osv.osv): def page_exists(self, cr, uid, ids, name, module='website', context=None): try: - return self.pool["ir.model.data"].get_object_reference(cr, uid, module, name) + name = (name or "").replace("/page/website.", "").replace("/page/", "") + if not name: + return False + return self.pool["ir.model.data"].get_object_reference(cr, uid, module, name) except: return False @@ -394,9 +397,14 @@ class website(osv.osv): yield page def search_pages(self, cr, uid, ids, needle=None, limit=None, context=None): - return list(itertools.islice( - self.enumerate_pages(cr, uid, ids, query_string=needle, context=context), - limit)) + name = (needle or "").replace("/page/website.", "").replace("/page/", "") + res = [] + for page in self.enumerate_pages(cr, uid, ids, query_string=name, context=context): + if needle in page['loc']: + res.append(page) + if len(res) == limit: + break + return res def kanban(self, cr, uid, ids, model, domain, column, template, step=None, scope=None, orderby=None, context=None): step = step and int(step) or 10 diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 60076b9664b..0bf62a0df59 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -1046,6 +1046,7 @@ make_link: function (url, new_window, label, classes) { }, bind_data: function () { + var self = this; var href = this.element && (this.element.data( 'cke-saved-href') || this.element.getAttribute('href')); var new_window = this.element @@ -1053,8 +1054,13 @@ : false; var text = this.element ? this.element.getText() : ''; if (!text.length) { - var selection = this.editor.getSelection(); - text = selection.getSelectedText(); + if (this.editor) { + text = this.editor.getSelection().getSelectedText(); + } else { + text = this.data.name; + href = this.data.url; + new_window = this.data.new_window; + } } this.$('input#link-text').val(text); @@ -1075,8 +1081,14 @@ this.$('input.email-address').val(match[1]).change(); } if (href && !$control) { - this.$('input.url').val(href).change(); - this.$('input.window-new').closest("div").show(); + this.page_exists(href).then(function (exist) { + if (exist) { + self.$('#link-page').select2('data', {'id': href, 'text': href}); + } else { + self.$('input.url').val(href).change(); + self.$('input.window-new').closest("div").show(); + } + }); } this.preview(); },