From 73446943f554bef9528e6892f5bf28484ce71eb7 Mon Sep 17 00:00:00 2001 From: "chm@openerp.com" <> Date: Thu, 6 Mar 2014 14:47:46 +0100 Subject: [PATCH] [FIX] website snippet: clean_for_save; display email in subscribe snippet bzr revid: chm@openerp.com-20140306134746-oi0p580c3s3t2a24 --- .../static/src/js/website.snippets.editor.js | 28 +++++++++---------- addons/website_mail/controllers/main.py | 4 +-- .../static/src/js/website_mail.editor.js | 3 ++ .../static/src/js/website_mail.js | 12 +++----- 4 files changed, 22 insertions(+), 25 deletions(-) diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index 2c9d00c8e27..f619dd10c03 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -31,10 +31,6 @@ return this._super.apply(this, arguments); }, save: function () { - this.snippets.make_active(false); - - // FIXME: call clean_for_save on all snippets of the page, not only modified ones - // important for banner of parallax that changes data automatically. this.snippets.clean_for_save(); this._super(); }, @@ -55,6 +51,7 @@ if (!website.snippet) website.snippet = {}; website.snippet.templateOptions = {}; + website.snippet.globalSelector = ""; website.snippet.selector = []; website.snippet.BuildingBlock = openerp.Widget.extend({ template: 'website.snippets', @@ -132,6 +129,7 @@ .then(function (html) { var $html = $(html); + var selector = []; var $styles = $html.find("[data-snippet-option-id]"); $styles.each(function () { var $style = $(this); @@ -144,8 +142,10 @@ 'selector-children': $style.data('selector-children'), 'selector-vertical-children': $style.data('selector-vertical-children') }; + selector.push($style.data('selector')); }); $styles.addClass("hidden"); + website.snippet.globalSelector = selector.join(","); self.$snippets = $html.find(".tab-content > div > div").addClass("oe_snippet"); self.$el.append($html); @@ -195,17 +195,12 @@ return; } snipped_event_flag = true; - var selector = []; - for (var k in website.snippet.templateOptions) { - selector.push(website.snippet.templateOptions[k].selector); - } - selector = selector.join(","); setTimeout(function () {snipped_event_flag = false;}, 0); var $target = $(event.srcElement); - if (!$target.is(selector)) { - $target = $target.parents(selector).first(); + if (!$target.is(website.snippet.globalSelector)) { + $target = $target.parents(website.snippet.globalSelector).first(); } if (!self.dom_filter($target).length) { $target = false; @@ -231,13 +226,16 @@ } }, clean_for_save: function () { - for (var k in this.snippets) { - if (!this.snippets.hasOwnProperty(k)) { continue; } - var editor = $(this.snippets[k]).data("snippet-editor"); + var self = this; + $(website.snippet.globalSelector).each(function () { + var $snippet = $(this); + self.make_active($snippet); + self.make_active(false); + var editor = $snippet.data("snippet-editor"); if (editor) { editor.clean_for_save(); } - } + }); }, make_active: function ($snippet) { if ($snippet && this.$active_snipped_id && this.$active_snipped_id.get(0) === $snippet.get(0)) { diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 0da804a4f1c..601e1387f0a 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -59,10 +59,10 @@ class WebsiteMail(http.Controller): @http.route(['/website_mail/is_follower/'], type='json', auth="public", website=True) def call(self, model, id, **post): - public_id = request.registry['website'].get_public_user(request.cr, request.uid, request.context) + email = request.registry['res.users'].browse(request.cr, request.uid, request.uid, request.context).partner_id.email value = request.registry.get(model).read(request.cr, request.uid, [id], ['message_is_follower'], request.context) return { - 'is_public': request.uid == public_id, + 'email': email, 'is_follower': value and value[0]['message_is_follower'] or False } diff --git a/addons/website_mail/static/src/js/website_mail.editor.js b/addons/website_mail/static/src/js/website_mail.editor.js index c67f0eba2b8..bef6eedfef4 100644 --- a/addons/website_mail/static/src/js/website_mail.editor.js +++ b/addons/website_mail/static/src/js/website_mail.editor.js @@ -31,6 +31,9 @@ this.$el.find(".js_mailing_list").on("click", _.bind(this.on_prompt, this)); this._super(); }, + clean_for_save: function () { + this.$target.addClass("hidden"); + }, }); })(); diff --git a/addons/website_mail/static/src/js/website_mail.js b/addons/website_mail/static/src/js/website_mail.js index 15f7e4381a0..e72cf0bc9b6 100644 --- a/addons/website_mail/static/src/js/website_mail.js +++ b/addons/website_mail/static/src/js/website_mail.js @@ -12,15 +12,11 @@ model: this.$target.data('object'), id: +this.$target.data('id'), }).always(function (data) { - - var $input = self.$target.find('input.js_follow_email'); - if(data.is_public) { - $input.removeClass("hidden"); - } else { - $input.addClass("hidden"); - } - + self.$target.find('input.js_follow_email') + .val(data.email ? data.email : "") + .attr("disabled", data.email.length ? "disabled" : false); self.$target.attr("data-follow", data.is_follower ? 'on' : 'off'); + self.$target.removeClass("hidden"); }); }, });