summaryrefslogtreecommitdiff
path: root/addons/mass_mailing/static/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mass_mailing/static/src/js')
-rw-r--r--addons/mass_mailing/static/src/js/website_mass_mailing.editor.js40
-rw-r--r--addons/mass_mailing/static/src/js/website_mass_mailing.js57
2 files changed, 97 insertions, 0 deletions
diff --git a/addons/mass_mailing/static/src/js/website_mass_mailing.editor.js b/addons/mass_mailing/static/src/js/website_mass_mailing.editor.js
new file mode 100644
index 00000000000..4caba1d29b5
--- /dev/null
+++ b/addons/mass_mailing/static/src/js/website_mass_mailing.editor.js
@@ -0,0 +1,40 @@
+(function () {
+ 'use strict';
+
+ var website = openerp.website;
+ var _t = openerp._t;
+
+ website.snippet.options.mailing_list_subscribe = website.snippet.Option.extend({
+ on_prompt: function () {
+ var self = this;
+ return website.prompt({
+ id: "editor_new_mailing_list_subscribe_button",
+ window_title: _t("Add a Newsletter Subscribe Button"),
+ select: _t("Newsletter"),
+ init: function (field) {
+ return website.session.model('mail.mass_mailing.list')
+ .call('name_search', ['', []], { context: website.get_context() });
+ },
+ }).then(function (mailing_list_id) {
+ self.$target.attr("data-list-id", mailing_list_id);
+ });
+ },
+ drop_and_build_snippet: function() {
+ var self = this;
+ this._super();
+ this.on_prompt().fail(function () {
+ self.editor.on_remove();
+ });
+ },
+ start : function () {
+ var self = this;
+ 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/mass_mailing/static/src/js/website_mass_mailing.js b/addons/mass_mailing/static/src/js/website_mass_mailing.js
new file mode 100644
index 00000000000..5776fadfb3f
--- /dev/null
+++ b/addons/mass_mailing/static/src/js/website_mass_mailing.js
@@ -0,0 +1,57 @@
+(function () {
+ 'use strict';
+
+ var website = openerp.website;
+
+ website.snippet.animationRegistry.subscribe = website.snippet.Animation.extend({
+ selector: ".js_subscribe",
+ start: function (editable_mode) {
+ var self = this;
+
+ // set value and display button
+ self.$target.find("input").removeClass("hidden");
+ openerp.jsonRpc('/website_mass_mailing/is_subscriber', 'call', {
+ list_id: this.$target.data('list-id'),
+ }).always(function (data) {
+ self.$target.find('input.js_subscribe_email')
+ .val(data.email ? data.email : "")
+ .attr("disabled", data.is_subscriber && data.email.length ? "disabled" : false);
+ self.$target.attr("data-subscribe", data.is_subscriber ? 'on' : 'off');
+ self.$target.find('a.js_subscribe_btn')
+ .val(data.email ? data.email : "")
+ .attr("disabled", data.is_subscriber && data.email.length ? "disabled" : false);
+ self.$target.removeClass("hidden");
+ });
+
+ // not if editable mode to allow designer to edit alert field
+ if (!editable_mode) {
+ $('.js_subscribe > .alert').addClass("hidden");
+ $('.js_subscribe > .input-group-btn.hidden').removeClass("hidden");
+ this.$target.find('.js_subscribe_btn').on('click', function (event) {
+ event.preventDefault();
+ self.on_click();
+ });
+ }
+ },
+ on_click: function () {
+ var self = this;
+ var $email = this.$target.find(".js_subscribe_email:visible");
+
+ if ($email.length && !$email.val().match(/.+@.+/)) {
+ this.$target.addClass('has-error');
+ return false;
+ }
+ this.$target.removeClass('has-error');
+
+ openerp.jsonRpc('/website_mass_mailing/subscribe', 'call', {
+ 'list_id': this.$target.data('list-id'),
+ 'email': $email.length ? $email.val() : false,
+ }).then(function (subscribe) {
+ self.$target.find(".js_subscribe_email, .input-group-btn").addClass("hidden");
+ self.$target.find(".alert").removeClass("hidden");
+ self.$target.find('input.js_subscribe_email').attr("disabled", subscribe ? "disabled" : false);
+ self.$target.attr("data-subscribe", subscribe ? 'on' : 'off');
+ });
+ },
+ });
+})();