camaleon_mailchimp 0.0.1 → 0.0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/plugins/camaleon_mailchimp/admin_controller.rb +1 -1
- data/app/controllers/plugins/camaleon_mailchimp/front_controller.rb +14 -5
- data/app/helpers/plugins/camaleon_mailchimp/main_helper.rb +28 -1
- data/app/views/plugins/camaleon_mailchimp/_update_user_more_action.erb +4 -4
- data/app/views/plugins/camaleon_mailchimp/admin/settings.html.erb +1 -1
- data/config/custom_models.rb +25 -49
- data/config/routes.rb +1 -0
- data/lib/camaleon_mailchimp/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9e776ce4cb8f1f415064c900e6357d0ebff414b
|
4
|
+
data.tar.gz: 2a4448b63a1c6d7b9147a37449aad23ef91b41fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 946e9ad7ca5c5b80ef623b76a65a5eb176fdee3bee4e38a8189d7b81fd56b0d980c474793cadd7530cbbb5c22d66e12ace46daf1f0aa111e1adaebe924d55d29
|
7
|
+
data.tar.gz: b288963ab166bc7395f681fd7ccef50b41bd93cd7c97ec1df1d95909ff2686574674d60c5838d69b11041af11ca47ad19f2d2fd2886705934c00007a7646b7a8
|
@@ -1,8 +1,17 @@
|
|
1
|
-
class Plugins::CamaleonMailchimp::FrontController < Apps::PluginsFrontController
|
1
|
+
class Plugins::CamaleonMailchimp::FrontController < CamaleonCms::Apps::PluginsFrontController
|
2
2
|
include Plugins::CamaleonMailchimp::MainHelper
|
3
|
-
def index
|
4
|
-
# actions for frontend module
|
5
|
-
end
|
6
3
|
|
7
|
-
|
4
|
+
skip_before_action :verify_authenticity_token
|
5
|
+
|
6
|
+
def hook
|
7
|
+
case params[:type]
|
8
|
+
when 'subscribe' then
|
9
|
+
subscribe_hook(params)
|
10
|
+
when 'unsubscribe' then
|
11
|
+
unsubscribe_hook(params)
|
12
|
+
when 'cleaned' then
|
13
|
+
user_cleaned_hook(param)
|
14
|
+
end
|
15
|
+
render :nothing => true
|
16
|
+
end
|
8
17
|
end
|
@@ -42,10 +42,37 @@ module Plugins::CamaleonMailchimp::MainHelper
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
def subscribe_hook(hook_data)
|
46
|
+
subscription_date = hook_data[:fired_at]
|
47
|
+
extra_data = hook_data[:data]
|
48
|
+
extra_data[:list_id]
|
49
|
+
extra_data[:email]
|
50
|
+
if extra_data[:list_id] == the_mailchimp_list_id
|
51
|
+
user = CamaleonCms::User.find_by_email(extra_data[:email])
|
52
|
+
user.update_mailchimp_values(1, subscription_date, '')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def unsubscribe_hook(hook_data)
|
57
|
+
extra_data = hook_data[:data]
|
58
|
+
user = CamaleonCms::User.find_by_email(extra_data[:email])
|
59
|
+
user.mailchimp_unsubscribe!(extra_data[:list_id]) unless user.nil?
|
60
|
+
end
|
61
|
+
|
62
|
+
# Equals that unsubscribe hook
|
63
|
+
def user_cleaned_hook(hook_data)
|
64
|
+
unsubscribe_hook(hook_data)
|
65
|
+
end
|
66
|
+
|
67
|
+
def the_mailchimp_list_id
|
68
|
+
plugin_config = current_site.get_meta('mailchimp_config')
|
69
|
+
plugin_config[:list_id]
|
70
|
+
end
|
71
|
+
|
45
72
|
private
|
46
73
|
|
47
74
|
def generate_custom_field_newsletter
|
48
|
-
group = User.first.get_user_field_groups(current_site).where({slug: 'plugin_mailchimp_user_data'})
|
75
|
+
group = CamaleonCms::User.first.get_user_field_groups(current_site).where({slug: 'plugin_mailchimp_user_data'})
|
49
76
|
unless group.present?
|
50
77
|
new_group = group.create({name: 'Mailchimp user data', slug: 'plugin_mailchimp_user_data', description: 'Mailchimp newsletter user subscription data'})
|
51
78
|
new_group.add_field({:name => "t('plugin.mailchimp.user.newsletter_subscribed')", :slug => 'mailchimp_newsletter_subscribed'}, {field_key: 'checkbox', default_value: false})
|
@@ -31,7 +31,7 @@
|
|
31
31
|
</div>
|
32
32
|
<div class="modal-body">
|
33
33
|
<p><%= t('plugin.mailchimp.modal.subscribe.body') %></p>
|
34
|
-
<%= form_for @user, url: @user.new_record? ?
|
34
|
+
<%= form_for @user, url: @user.new_record? ? cama_admin_users_path : admin_plugins_camaleon_mailchimp_subscribe_path(@user), html: {class: 'form-ajax-mailchimp-subscribe'} do |f| %>
|
35
35
|
<div class="modal-body form-horizontal form-group-separated">
|
36
36
|
<div class="modal-footer">
|
37
37
|
<button type="submit" class="btn btn-danger mailchimp-subscribe-btn"><%= t('plugin.mailchimp.modal.subscribe.submit') %></button>
|
@@ -55,7 +55,7 @@
|
|
55
55
|
</div>
|
56
56
|
<div class="modal-body">
|
57
57
|
<p><%= t('plugin.mailchimp.modal.unsubscribe.body') %></p>
|
58
|
-
<%= form_for @user, url: @user.new_record? ?
|
58
|
+
<%= form_for @user, url: @user.new_record? ? cama_admin_users_path : admin_plugins_camaleon_mailchimp_unsubscribe_path(@user), html: {class: 'form-ajax-mailchimp-unsubscribe'} do |f| %>
|
59
59
|
<div class="modal-body form-horizontal form-group-separated">
|
60
60
|
<div class="modal-footer">
|
61
61
|
<button type="submit" class="btn btn-danger"><%= t('plugin.mailchimp.modal.unsubscribe.submit') %></button>
|
@@ -85,7 +85,7 @@
|
|
85
85
|
} else {
|
86
86
|
$.fn.alert({title: res.message.msg, close: res.message.close});
|
87
87
|
$("#modal_plugin_mailchimp_subscribe").modal('hide');
|
88
|
-
window.location.href = '<%=
|
88
|
+
window.location.href = '<%= cama_admin_users_path %>';
|
89
89
|
}
|
90
90
|
}
|
91
91
|
});
|
@@ -103,7 +103,7 @@
|
|
103
103
|
} else {
|
104
104
|
$.fn.alert({title: res.message.msg, close: res.message.close});
|
105
105
|
$("#modal_plugin_mailchimp_unsubscribe").modal('hide');
|
106
|
-
window.location.href = '<%=
|
106
|
+
window.location.href = '<%= cama_admin_users_path %>';
|
107
107
|
}
|
108
108
|
}
|
109
109
|
});
|
@@ -19,7 +19,7 @@
|
|
19
19
|
</div>
|
20
20
|
</div>
|
21
21
|
<div class="panel-footer">
|
22
|
-
<a class="btn btn-default" href="<%= url_for
|
22
|
+
<a class="btn btn-default" href="<%= url_for cama_admin_plugins_path %>"><%= t('admin.button.back') %></a>
|
23
23
|
<button class="btn btn-primary pull-right" type="submit"><%= t('admin.button.submit') %></button>
|
24
24
|
</div>
|
25
25
|
</div>
|
data/config/custom_models.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'gibbon'
|
2
2
|
# Extending User Model to add newsletter attributes
|
3
|
-
User.class_eval do
|
3
|
+
CamaleonCms::User.class_eval do
|
4
4
|
|
5
5
|
def the_newsletter_subscribed?
|
6
6
|
self.get_field_value('mailchimp_newsletter_subscribed').to_s.to_bool
|
@@ -11,6 +11,7 @@ User.class_eval do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def the_mailchimp_member_id
|
14
|
+
|
14
15
|
self.get_field_value('mailchimp_member_id').to_s
|
15
16
|
end
|
16
17
|
|
@@ -44,18 +45,15 @@ User.class_eval do
|
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
def mailchimp_unsubscribe!
|
48
|
+
def mailchimp_unsubscribe!(list_id = nil)
|
48
49
|
begin
|
49
|
-
body_value = {
|
50
|
-
status: 'unsubscribed'
|
51
|
-
}
|
52
50
|
plugin_config = current_site.get_meta('mailchimp_config')
|
53
51
|
mailchimp_api_key = plugin_config[:api_key]
|
54
|
-
|
52
|
+
mailchimp_list_id = list_id.nil? ? plugin_config[:list_id] : list_id
|
55
53
|
member_id = the_mailchimp_member_id
|
56
|
-
Rails.logger.info "[Mailchimp plugin] Start unsubscribe list: #{
|
57
|
-
gibbon = Gibbon::
|
58
|
-
gibbon.lists
|
54
|
+
Rails.logger.info "[Mailchimp plugin] Start unsubscribe list: #{mailchimp_list_id} api: #{mailchimp_api_key} member_id: #{member_id}"
|
55
|
+
gibbon = Gibbon::API.new(mailchimp_api_key)
|
56
|
+
gibbon.lists.unsubscribe(:id => mailchimp_list_id, :email => {:email => email}, :send_notify => true)
|
59
57
|
mailchimp_update_unsubscription_values!
|
60
58
|
rescue Gibbon::MailChimpError => exception
|
61
59
|
Rails.logger.error "[Mailchimp plugin error] exception: #{exception} title: #{exception.title} detail: #{exception.detail} body: #{exception.body}"
|
@@ -66,6 +64,21 @@ User.class_eval do
|
|
66
64
|
end
|
67
65
|
end
|
68
66
|
|
67
|
+
def update_mailchimp_values(subscribed, enabled_at, member_id)
|
68
|
+
field_groups = self.get_user_field_groups(current_site).where({:slug => 'plugin_mailchimp_user_data'}).first
|
69
|
+
field_newsletter_subscribed = field_groups.get_field('mailchimp_newsletter_subscribed')
|
70
|
+
field_newsletter_enabled_at = field_groups.get_field('mailchimp_newsletter_enabled_at')
|
71
|
+
field_member_id = field_groups.get_field('mailchimp_member_id')
|
72
|
+
|
73
|
+
values_to_save = {
|
74
|
+
:mailchimp_newsletter_subscribed => {id: field_newsletter_subscribed.id, values: [subscribed]},
|
75
|
+
:mailchimp_newsletter_enabled_at => {id: field_newsletter_enabled_at.id, values: [enabled_at]},
|
76
|
+
:mailchimp_member_id => {id: field_member_id.id, values: [member_id]}
|
77
|
+
}
|
78
|
+
|
79
|
+
set_field_values(values_to_save)
|
80
|
+
end
|
81
|
+
|
69
82
|
private
|
70
83
|
|
71
84
|
def mailchimp_api_subscribe
|
@@ -80,32 +93,11 @@ User.class_eval do
|
|
80
93
|
plugin_config = current_site.get_meta('mailchimp_config')
|
81
94
|
mailchimp_api_key = plugin_config[:api_key]
|
82
95
|
list_id = plugin_config[:list_id]
|
83
|
-
gibbon = Gibbon::
|
84
|
-
gibbon.lists(list_id).members.create(body: body_value)
|
96
|
+
gibbon = Gibbon::API.new(mailchimp_api_key)
|
97
|
+
# gibbon.lists(list_id).members.create(body: body_value)
|
98
|
+
gibbon.lists.subscribe({:id => list_id, :email => {:email => email}, :merge_vars => {:FNAME => meta[:first_name], :LNAME => meta[:last_name]}})
|
85
99
|
end
|
86
100
|
|
87
|
-
#
|
88
|
-
# def mailchimp_api_update_subscription
|
89
|
-
# begin
|
90
|
-
# body_value = {
|
91
|
-
# email_address: email,
|
92
|
-
# status: 'subscribed',
|
93
|
-
# merge_fields: {
|
94
|
-
# FNAME: meta[:first_name],
|
95
|
-
# LNAME: meta[:last_name]
|
96
|
-
# }
|
97
|
-
# }
|
98
|
-
# plugin_config = current_site.get_meta('mailchimp_config')
|
99
|
-
# mailchimp_api_key = plugin_config[:api_key]
|
100
|
-
# list_id = plugin_config[:list_id]
|
101
|
-
# gibbon = Gibbon::Request.new(api_key: mailchimp_api_key)
|
102
|
-
# gibbon.lists(list_id).members(mem).update(body: body_value)
|
103
|
-
# rescue Gibbon::MailChimpError => exception
|
104
|
-
# Rails.logger.error "[Mailchimp plugin error] exception: #{exception} title: #{exception.title} detail: #{exception.detail} body: #{exception.body}"
|
105
|
-
# nil
|
106
|
-
# end
|
107
|
-
# end
|
108
|
-
|
109
101
|
def mailchimp_update_unsubscription_values!
|
110
102
|
update_mailchimp_values(0, '', '')
|
111
103
|
end
|
@@ -113,21 +105,5 @@ User.class_eval do
|
|
113
105
|
def mailchimp_update_subscription_values!(new_member)
|
114
106
|
update_mailchimp_values(1, Time.zone.now, new_member['id'])
|
115
107
|
end
|
116
|
-
|
117
|
-
|
118
|
-
def update_mailchimp_values(subscribed, enabled_at, member_id)
|
119
|
-
field_groups = self.get_user_field_groups(current_site).where({:slug => 'plugin_mailchimp_user_data'}).first
|
120
|
-
field_newsletter_subscribed = field_groups.get_field('mailchimp_newsletter_subscribed')
|
121
|
-
field_newsletter_enabled_at = field_groups.get_field('mailchimp_newsletter_enabled_at')
|
122
|
-
field_member_id = field_groups.get_field('mailchimp_member_id')
|
123
|
-
|
124
|
-
values_to_save = {
|
125
|
-
:mailchimp_newsletter_subscribed => {id: field_newsletter_subscribed.id, values: [subscribed]},
|
126
|
-
:mailchimp_newsletter_enabled_at => {id: field_newsletter_enabled_at.id, values: [enabled_at]},
|
127
|
-
:mailchimp_member_id => {id: field_member_id.id, values: [member_id]}
|
128
|
-
}
|
129
|
-
|
130
|
-
set_field_values(values_to_save)
|
131
|
-
end
|
132
108
|
end
|
133
109
|
|
data/config/routes.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: camaleon_mailchimp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1
|
4
|
+
version: 0.0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- raulanatol
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -36,14 +36,14 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '1.1'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '1.1'
|
47
47
|
description: ": Description of CamaleonMailchimp."
|
48
48
|
email:
|
49
49
|
- raul@natol.es
|
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
128
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.5.1
|
130
130
|
signing_key:
|
131
131
|
specification_version: 4
|
132
132
|
summary: ": Summary of CamaleonMailchimp."
|