orange 0.3.8 → 0.3.9
Sign up to get free protection for your applications and to get access to all the features.
@@ -6,8 +6,8 @@ class OrangeMember < Orange::Carton
|
|
6
6
|
text :first_name
|
7
7
|
text :last_name
|
8
8
|
text :email
|
9
|
-
text :
|
10
|
-
text :
|
9
|
+
text :title
|
10
|
+
text :organization
|
11
11
|
end
|
12
12
|
text :hashed_password
|
13
13
|
text :salt
|
@@ -15,7 +15,6 @@ class OrangeMember < Orange::Carton
|
|
15
15
|
property :reset_on, DateTime
|
16
16
|
|
17
17
|
def password=(val)
|
18
|
-
salt = self.salt
|
19
18
|
attribute_set(:hashed_password, Digest::MD5.hexdigest("#{salt}orange-is-awesome#{val}"))
|
20
19
|
end
|
21
20
|
|
@@ -12,6 +12,7 @@ module Orange
|
|
12
12
|
options[:mailchimp_key] = orange.options["mailchimp_key"] || false
|
13
13
|
options[:mailchimp_list] = orange.options["mailchimp_list"] || false
|
14
14
|
options[:mailchimp_interests] = orange.options["mailchimp_interests"] || false
|
15
|
+
options[:mailchimp_merge_fields] = orange.options["mailchimp_merge_fields"] || {}
|
15
16
|
Spreedly.configure(options[:spreedly_site], options[:spreedly_key]) if options[:spreedly_key]
|
16
17
|
|
17
18
|
orange[:admin, true].add_link("Settings", :resource => @my_orange_name, :text => 'Members')
|
@@ -99,10 +100,23 @@ module Orange
|
|
99
100
|
old_email = member_params["old_email"] || email
|
100
101
|
fname = member_params["first_name"] || ''
|
101
102
|
lname = member_params["last_name"] || ''
|
103
|
+
others = {}
|
104
|
+
for key, val in options[:mailchimp_merge_fields]
|
105
|
+
others[val.upcase.to_sym] = member_params[key] || ''
|
106
|
+
end
|
102
107
|
interests = member_params["groups"].blank? ? [] : member_params["groups"].map{|key, val|
|
103
108
|
{ "name" => key, "groups" => val.reject{|str| str.blank? }.map{|str| str.gsub(/,/, '\,')}.join(",") }
|
104
109
|
}
|
105
|
-
hominid.subscribe(options[:mailchimp_list], old_email, {:FNAME => fname, :LNAME => lname, :GROUPINGS => interests}, {:update_existing => true})
|
110
|
+
hominid.subscribe(options[:mailchimp_list], old_email, {:FNAME => fname, :LNAME => lname, :GROUPINGS => interests}.merge(others), {:update_existing => true})
|
111
|
+
end
|
112
|
+
|
113
|
+
def synchronize_from_mailchimp(packet, member)
|
114
|
+
email = member.email
|
115
|
+
member_info = mailchimp_member_info(packet, member)
|
116
|
+
for key, val in options[:mailchimp_merge_fields]
|
117
|
+
member.attribute_set(key, member_info["merges"][val])
|
118
|
+
end
|
119
|
+
member.save
|
106
120
|
end
|
107
121
|
|
108
122
|
def batch_update_interest_mailchimp(packet, emails, grouping_name, groups)
|
@@ -134,12 +148,19 @@ module Orange
|
|
134
148
|
hominid.unsubscribe(options[:mailchimp_list], email)
|
135
149
|
end
|
136
150
|
|
137
|
-
def
|
151
|
+
def mailchimp_member_info(packet, member)
|
138
152
|
# Can give member id, hydrate to member before continuing.
|
139
153
|
unless member.is_a? model_class
|
140
154
|
member = model_class.get(member)
|
141
155
|
end
|
142
|
-
|
156
|
+
return [] unless member && options[:mailchimp_list]
|
157
|
+
list = options[:mailchimp_list]
|
158
|
+
begin
|
159
|
+
mailchimp_info = hominid.member_info(list, member.email)
|
160
|
+
rescue Hominid::ListError => e
|
161
|
+
mailchimp_info = {}
|
162
|
+
end
|
163
|
+
mailchimp_info
|
143
164
|
end
|
144
165
|
|
145
166
|
def login(packet, opts = {})
|
@@ -148,7 +169,8 @@ module Orange
|
|
148
169
|
login = params["login_email"]
|
149
170
|
password = params["login_password"]
|
150
171
|
member = model_class.first({:email => login})
|
151
|
-
tester = model_class.new({:
|
172
|
+
tester = model_class.new({:salt => (member.salt || "")})
|
173
|
+
tester.password = password
|
152
174
|
if member && tester.hashed_password == member.hashed_password
|
153
175
|
packet.session["member"] = member.id
|
154
176
|
packet.reroute(@my_orange_name, :orange, :profile)
|
@@ -165,7 +187,12 @@ module Orange
|
|
165
187
|
def register(packet, opts = {})
|
166
188
|
if packet.request.post?
|
167
189
|
params = packet.request.params["members"]
|
168
|
-
|
190
|
+
unless params["name"].blank?
|
191
|
+
# Problem, stay on registration
|
192
|
+
packet.flash("error", "It looks like you might be a spam robot. Make sure you didn't fill out an extra field by mistake.")
|
193
|
+
return do_view(packet, :register, opts.merge(:list_groups => list_groups(packet)))
|
194
|
+
end
|
195
|
+
params.delete("name")
|
169
196
|
member = model_class.first(:email => params["email"])
|
170
197
|
if member
|
171
198
|
# Existing member... do they already have password?
|
@@ -201,7 +228,13 @@ module Orange
|
|
201
228
|
new(packet, {:no_reroute => true, :params => params})
|
202
229
|
# success ?
|
203
230
|
member = model_class.first(:email => params["email"])
|
204
|
-
if member
|
231
|
+
if member && !(mailchimp_member_info(packet, member).blank?)
|
232
|
+
packet.session["member"] = member.id
|
233
|
+
synchronize_from_mailchimp(packet, member)
|
234
|
+
synchronize_with_mailchimp(packet, params.merge("groups" => groups)) if mailing_list
|
235
|
+
packet.flash("info", "Looks like this email address was already on our mailing list. Please take the time to correct our details about you.")
|
236
|
+
packet.reroute(@my_orange_name, :orange, :profile)
|
237
|
+
elsif member
|
205
238
|
packet.session["member"] = member.id
|
206
239
|
params.merge!("groups" => groups)
|
207
240
|
synchronize_with_mailchimp(packet, params.merge("groups" => groups)) if mailing_list
|
@@ -7,6 +7,12 @@
|
|
7
7
|
%label Email
|
8
8
|
%br
|
9
9
|
%input{:type => "text", :name => "members[email]"}
|
10
|
+
%p.registration-name
|
11
|
+
%label Name*
|
12
|
+
%br
|
13
|
+
*Ignore this field unless you are a spam robot.
|
14
|
+
%br
|
15
|
+
%input{:type => "text", :name => "members[name]"}
|
10
16
|
%p
|
11
17
|
%label Password
|
12
18
|
%br
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 9
|
9
|
+
version: 0.3.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Haslem
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-03 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|