diff options
| author | Olivier Dony <odo@openerp.com> | 2014-05-27 20:49:49 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2014-05-27 20:49:49 +0200 |
| commit | 04211015fc3d4be2a8c65b9d977c2d9c4dac8be7 (patch) | |
| tree | b651a2900e630ed2ff780ddb960b55470f3bd118 /addons/website_mail | |
| parent | e16233217c6919b33e6d1135ff07538d839f6a2f (diff) | |
| parent | 045285123f2551ca74753260fcf807af4bc413d0 (diff) | |
[MERGE] Forward-port of latest saas-4 fixes, up to 0452851
Diffstat (limited to 'addons/website_mail')
| -rw-r--r-- | addons/website_mail/controllers/main.py | 30 | ||||
| -rw-r--r-- | addons/website_mail/models/mail_message.py | 2 | ||||
| -rw-r--r-- | addons/website_mail/static/src/js/website_mail.js | 42 | ||||
| -rw-r--r-- | addons/website_mail/views/snippets.xml | 27 |
4 files changed, 68 insertions, 33 deletions
diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 0932794ee28..de69fba490a 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -62,6 +62,7 @@ class WebsiteMail(http.Controller): @http.route(['/website_mail/is_follower'], type='json', auth="public", website=True) def call(self, model, id, **post): + id = int(id) cr, uid, context = request.cr, request.uid, request.context partner_obj = request.registry.get('res.partner') @@ -74,17 +75,28 @@ class WebsiteMail(http.Controller): partner_id = users_obj.browse(cr, SUPERUSER_ID, uid, context).partner_id elif request.session.get('partner_id'): partner_id = partner_obj.browse(cr, SUPERUSER_ID, request.session.get('partner_id'), context) - - email = "" - is_follower = False - if partner_id: - email = partner_id and partner_id.email - is_follower = partner_id.id in [ - fol.id for fol in obj.browse(cr, SUPERUSER_ID, id, context).message_follower_ids] + email = partner_id and partner_id.email or "" - return { + values = { 'is_user': uid != public_id, 'email': email, - 'is_follower': is_follower + 'is_follower': False, } + if not obj: + return values + obj_ids = obj.exists(cr, SUPERUSER_ID, [id], context=context) + if obj_ids: + if partner_id: + values['is_follower'] = len( + request.registry['mail.followers'].search( + cr, SUPERUSER_ID, [ + ('res_model', '=', 'mail.group'), + ('res_id', '=', obj_ids[0]), + ('partner_id', '=', partner_id.id) + ], context=context)) == 1 + if post.get('fields'): + record = obj.read(cr, SUPERUSER_ID, obj_ids[0], fields=post.get('fields'), context=context) + values.update(record) + + return values diff --git a/addons/website_mail/models/mail_message.py b/addons/website_mail/models/mail_message.py index 1e50611fa00..cff950f2962 100644 --- a/addons/website_mail/models/mail_message.py +++ b/addons/website_mail/models/mail_message.py @@ -34,7 +34,7 @@ class MailMessage(osv.Model): res[message.id] = message.subject else: plaintext_ct = html2plaintext(message.body) - res[message.id] = plaintext_ct + '%s' % (' [...]' if len(plaintext_ct) >= 20 else '') + res[message.id] = plaintext_ct[:30] + '%s' % (' [...]' if len(plaintext_ct) >= 30 else '') return res _columns = { diff --git a/addons/website_mail/static/src/js/website_mail.js b/addons/website_mail/static/src/js/website_mail.js index bd34b526ddd..d069f88ea45 100644 --- a/addons/website_mail/static/src/js/website_mail.js +++ b/addons/website_mail/static/src/js/website_mail.js @@ -7,17 +7,20 @@ selector: ".js_follow", start: function (editable_mode) { var self = this; + this.is_user = false; - // set value and display button - self.$target.find("input").removeClass("hidden"); openerp.jsonRpc('/website_mail/is_follower', 'call', { model: this.$target.data('object'), - id: +this.$target.data('id'), + id: this.$target.data('id'), + fields: ['name', 'alias_id'], }).always(function (data) { + self.is_user = data.is_user; + self.$target.find('.js_mg_email').attr('href', 'mailto:' + data.alias_id[1]); + self.$target.find('.js_mg_link').attr('href', '/groups/' + data.id); + self.toggle_subscription(data.is_follower); self.$target.find('input.js_follow_email') .val(data.email ? data.email : "") - .attr("disabled", data.is_follower && data.email.length ? "disabled" : false); - self.$target.attr("data-follow", data.is_follower ? 'on' : 'off'); + .attr("disabled", data.is_follower || (data.email.length && self.is_user) ? "disabled" : false); self.$target.removeClass("hidden"); }); @@ -30,10 +33,11 @@ self.on_click(); }); } + return; }, on_click: function () { var self = this; - var $email = this.$target.find(".js_follow_email:visible"); + var $email = this.$target.find(".js_follow_email"); if ($email.length && !$email.val().match(/.+@.+/)) { this.$target.addClass('has-error'); @@ -47,13 +51,27 @@ 'message_is_follower': this.$target.attr("data-follow") || "off", 'email': $email.length ? $email.val() : false, }).then(function (follow) { - if (follow) { - self.$target.find(".js_follow_email, .input-group-btn").addClass("hidden"); - self.$target.find(".alert").removeClass("hidden"); - } - self.$target.find('input.js_follow_email').attr("disabled", follow ? "disabled" : false); - self.$target.attr("data-follow", follow ? 'on' : 'off'); + self.toggle_subscription(follow); }); }, + toggle_subscription: function(follow) { + if (follow) { + this.$target.find(".js_mg_follow_form").addClass("hidden"); + this.$target.find(".js_mg_details").removeClass("hidden"); + } + else { + this.$target.find(".js_mg_follow_form").removeClass("hidden"); + this.$target.find(".js_mg_details").addClass("hidden"); + } + this.$target.find('input.js_follow_email').attr("disabled", follow || this.is_user ? "disabled" : false); + this.$target.attr("data-follow", follow ? 'on' : 'off'); + }, + }); + + $(document).ready(function () { + $('.js_follow_btn').on('click', function (ev) { + var email = $(ev.currentTarget).parents('.js_mg_follow_form').first().find('.js_follow_email').val(); + $(document).find('.js_follow_email').val(email); + }); }); })(); diff --git a/addons/website_mail/views/snippets.xml b/addons/website_mail/views/snippets.xml index 98a79393211..987ccaa672e 100644 --- a/addons/website_mail/views/snippets.xml +++ b/addons/website_mail/views/snippets.xml @@ -503,20 +503,25 @@ <span class="oe_snippet_thumbnail_title">Subscribe Button</span> </div> - <div class="oe_snippet_body input-group js_follow" + <div class="oe_snippet_body js_follow" data-id="0" data-object="mail.group" data-follow="off"> - <input - type="email" - name="email" - class="js_follow_email form-control" - placeholder="your email..."/> - <span class="input-group-btn"> - <a href="#" class="btn btn-default js_unfollow_btn">Unsubscribe</a> - <a href="#" class="btn btn-primary js_follow_btn">Subscribe</a> - </span> - <div class="alert alert-success hidden">thanks for your subscription!</div> + <div class="input-group js_mg_follow_form"> + <input + type="email" + name="email" + class="js_follow_email form-control" + placeholder="your email..."/> + <span class="input-group-btn"> + <button href="#" class="btn btn-primary js_follow_btn">Subscribe</button> + </span> + </div> + <p class="js_mg_details hidden well well-sm"> + <i class="fa fa-envelope-o"/><a href="#" class="js_mg_email"> send mail</a> - + <i class="fa fa-file-o"/><a href="#" class="js_mg_link"> archives</a> - + <i class="fa fa-times"/><a href="#" class="js_unfollow_btn"> unsubscribe</a> + </p> </div> </div> |
