From b07b8a5b1fc0773d4dbbaf13dba4ed0d4a3ae3d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 19 Jun 2014 09:33:36 +0200 Subject: [PATCH] [FIX] website_mail: restored follow JS code that was wrongly merged with the mail group follow snippet. Now both widget animation exists, the second being more complex and therefore requiring a different animation. --- addons/website_mail/controllers/main.py | 3 +- addons/website_mail/static/src/js/follow.js | 68 +++++++++++++++++++ addons/website_mail/views/website_mail.xml | 1 + .../src/js/website_mail_group.snippet.js | 8 +-- addons/website_mail_group/views/snippets.xml | 4 +- 5 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 addons/website_mail/static/src/js/follow.js diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 081ba93b8b4..c5896ecd16c 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -94,9 +94,8 @@ class WebsiteMail(http.Controller): values['is_follower'] = len( request.registry['mail.followers'].search( cr, SUPERUSER_ID, [ - ('res_model', '=', 'mail.group'), + ('res_model', '=', model), ('res_id', '=', obj_ids[0]), ('partner_id', '=', partner_id.id) ], context=context)) == 1 - return values diff --git a/addons/website_mail/static/src/js/follow.js b/addons/website_mail/static/src/js/follow.js new file mode 100644 index 00000000000..18c36378328 --- /dev/null +++ b/addons/website_mail/static/src/js/follow.js @@ -0,0 +1,68 @@ +(function () { + 'use strict'; + + var website = openerp.website; + + website.snippet.animationRegistry.follow = website.snippet.Animation.extend({ + selector: ".js_follow", + start: function (editable_mode) { + var self = this; + this.is_user = false; + + openerp.jsonRpc('/website_mail/is_follower', 'call', { + model: this.$target.data('object'), + id: this.$target.data('id'), + }).always(function (data) { + self.is_user = data.is_user; + self.email = data.email; + self.toggle_subscription(data.is_follower, data.email); + self.$target.removeClass("hidden"); + }); + + // not if editable mode to allow designer to edit alert field + if (!editable_mode) { + $('.js_follow > .alert').addClass("hidden"); + $('.js_follow > .input-group-btn.hidden').removeClass("hidden"); + this.$target.find('.js_follow_btn, .js_unfollow_btn').on('click', function (event) { + event.preventDefault(); + self.on_click(); + }); + } + return; + }, + on_click: function () { + var self = this; + var $email = this.$target.find(".js_follow_email"); + + if ($email.length && !$email.val().match(/.+@.+/)) { + this.$target.addClass('has-error'); + return false; + } + this.$target.removeClass('has-error'); + + openerp.jsonRpc('/website_mail/follow', 'call', { + 'id': +this.$target.data('id'), + 'object': this.$target.data('object'), + 'message_is_follower': this.$target.attr("data-follow") || "off", + 'email': $email.length ? $email.val() : false, + }).then(function (follow) { + self.toggle_subscription(follow, self.email); + }); + }, + toggle_subscription: function(follow, email) { + console.log(follow, email); + if (follow) { + this.$target.find(".js_follow_btn").addClass("hidden"); + this.$target.find(".js_unfollow_btn").removeClass("hidden"); + } + else { + this.$target.find(".js_follow_btn").removeClass("hidden"); + this.$target.find(".js_unfollow_btn").addClass("hidden"); + } + this.$target.find('input.js_follow_email') + .val(email ? email : "") + .attr("disabled", follow || (email.length && this.is_user) ? "disabled" : false); + this.$target.attr("data-follow", follow ? 'on' : 'off'); + }, + }); +})(); diff --git a/addons/website_mail/views/website_mail.xml b/addons/website_mail/views/website_mail.xml index 6202e00342b..3b6d1bb96d6 100644 --- a/addons/website_mail/views/website_mail.xml +++ b/addons/website_mail/views/website_mail.xml @@ -21,6 +21,7 @@ diff --git a/addons/website_mail_group/static/src/js/website_mail_group.snippet.js b/addons/website_mail_group/static/src/js/website_mail_group.snippet.js index fd6a2d38cfa..8ad4f9ba796 100644 --- a/addons/website_mail_group/static/src/js/website_mail_group.snippet.js +++ b/addons/website_mail_group/static/src/js/website_mail_group.snippet.js @@ -3,8 +3,8 @@ var website = openerp.website; - website.snippet.animationRegistry.follow = website.snippet.Animation.extend({ - selector: ".js_follow", + website.snippet.animationRegistry.follow_alias = website.snippet.Animation.extend({ + selector: ".js_follow_alias", start: function (editable_mode) { var self = this; this.is_user = false; @@ -23,8 +23,8 @@ // not if editable mode to allow designer to edit alert field if (!editable_mode) { - $('.js_follow > .alert').addClass("hidden"); - $('.js_follow > .input-group-btn.hidden').removeClass("hidden"); + $('.js_follow_alias > .alert').addClass("hidden"); + $('.js_follow_alias > .input-group-btn.hidden').removeClass("hidden"); this.$target.find('.js_follow_btn, .js_unfollow_btn').on('click', function (event) { event.preventDefault(); self.on_click(); diff --git a/addons/website_mail_group/views/snippets.xml b/addons/website_mail_group/views/snippets.xml index 56ba81d81b3..e3adb6a14cd 100644 --- a/addons/website_mail_group/views/snippets.xml +++ b/addons/website_mail_group/views/snippets.xml @@ -11,7 +11,7 @@ Discussion Group -
@@ -38,7 +38,7 @@