camaleon_mailchimp 0.0.1 → 0.0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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."
|