You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

61 lines
2.2 KiB

/* © 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
"use strict";
(function ($) {
openerp.website.snippet.animationRegistry.subscribe.include({
start: function(editable_mode) {
var self = this;
self.$email = self.$target.find(".js_subscribe_email");
self.$name = self.$target.find(".js_subscribe_name");
// Thanks upstream for your @$&#?!! inheritance-ready code.
// Injecting ajax events to modify behavior of snippet.
if (self.$name) {
$(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
return self.on_ajax_send(event, jqXHR, ajaxOptions);
});
}
return self._super(editable_mode);
},
on_click: function() {
var self = this,
email_error = !self.$email.val().match(/.+@.+/),
name_error = self.$name.length && !self.$name.val(),
values = {
"list_id": self.$target.data('list-id'),
"email": self.$email.val(),
};
// Stop on error
if (email_error || name_error) {
self.$target.addClass("has-error")
return false;
}
return self._super();
},
on_ajax_send: function(event, jqXHR, ajaxOptions) {
var self = this;
// Add handlers on correct requests
if (ajaxOptions.url == "/website_mass_mailing/is_subscriber") {
jqXHR.then(function(data) {
return self.on_start(data);
});
} else if (ajaxOptions.url == "/website_mass_mailing/subscribe") {
var data = JSON.parse(ajaxOptions.data);
data.params.email =
self.$name.val() + " <" + data.params.email + ">";
ajaxOptions.data = JSON.stringify(data);
}
},
on_start: function(data) {
this.$name.val(data.result.name)
.attr(
"disabled",
Boolean(data.result.is_subscriber && data.result.name.length)
);
},
});
})(jQuery);