peterosullivan-highrise 3.0.6 → 3.0.7
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.
- data/Gemfile.lock +2 -2
- data/README.md +1 -1
- data/lib/highrise.rb +34 -23
- data/lib/highrise/base.rb +7 -2
- data/lib/highrise/company.rb +1 -1
- data/lib/highrise/has_subject_data.rb +19 -0
- data/lib/highrise/pagination.rb +2 -1
- data/lib/highrise/person.rb +1 -18
- data/lib/highrise/searchable.rb +5 -4
- data/lib/highrise/subject_data.rb +1 -19
- data/lib/highrise/subject_field.rb +5 -0
- data/lib/highrise/version.rb +1 -1
- metadata +5 -3
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
highrise (3.0.
|
4
|
+
peterosullivan-highrise (3.0.6)
|
5
5
|
activeresource (~> 3.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -41,6 +41,6 @@ PLATFORMS
|
|
41
41
|
|
42
42
|
DEPENDENCIES
|
43
43
|
activeresource (~> 3.0)
|
44
|
-
highrise!
|
44
|
+
peterosullivan-highrise!
|
45
45
|
rake (= 0.8.7)
|
46
46
|
rspec (~> 2.0.1)
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ This fork is very close to the orginal gem. I have added a few features and shor
|
|
18
18
|
###Highrise Custom Fields read only (called "subject_datas" in the Highrise API)
|
19
19
|
|
20
20
|
p = Highrise::Person.find(123)
|
21
|
-
p.
|
21
|
+
p.subject_data_hash #{"favourite_color"=>"red"}
|
22
22
|
p.field("FavouriteColor") #<Highrise::SubjectData:0xb5e3442c @attributes={"subject_field_label"=>"FavouriteColor", "id"=>12065552, "value"=>"red", "subject_field_id"=>123}, @prefix_options={}>
|
23
23
|
p.favourite_color #"red"
|
24
24
|
|
data/lib/highrise.rb
CHANGED
@@ -1,24 +1,35 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
1
|
+
%w[
|
2
|
+
base
|
3
|
+
version
|
4
|
+
rfc822
|
5
|
+
|
6
|
+
pagination
|
7
|
+
taggable
|
8
|
+
searchable
|
9
|
+
has_subject_data
|
10
|
+
|
11
|
+
subject
|
12
|
+
|
13
|
+
comment
|
14
|
+
company
|
15
|
+
email
|
16
|
+
group
|
17
|
+
kase
|
18
|
+
membership
|
19
|
+
note
|
20
|
+
person
|
21
|
+
task
|
22
|
+
user
|
23
|
+
tag
|
24
|
+
deal
|
25
|
+
account
|
26
|
+
deal_category
|
27
|
+
task_category
|
28
|
+
party
|
29
|
+
recording
|
30
|
+
subject_field
|
31
|
+
subject_data
|
24
32
|
|
33
|
+
].each do |lib|
|
34
|
+
require File.join(File.dirname(__FILE__), 'highrise', lib)
|
35
|
+
end
|
data/lib/highrise/base.rb
CHANGED
@@ -16,8 +16,13 @@ module Highrise
|
|
16
16
|
if method.to_s =~ /^find_(all_)?by_([_a-zA-Z]\w*)$/
|
17
17
|
raise ArgumentError, "Dynamic finder method must take an argument." if args.empty?
|
18
18
|
options = args.extract_options!
|
19
|
-
|
20
|
-
|
19
|
+
if respond_to? :search
|
20
|
+
resources = search $2 => args.first
|
21
|
+
$1 == 'all_' ? resources : resources.first
|
22
|
+
else
|
23
|
+
resources = respond_to?(:find_all_across_pages) ? find_all_across_pages(options) : find(:all)
|
24
|
+
resources.send($1 == 'all_' ? 'select' : 'detect') { |container| container.send($2) == args.first }
|
25
|
+
end
|
21
26
|
else
|
22
27
|
super
|
23
28
|
end
|
data/lib/highrise/company.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Highrise
|
2
|
+
module HasSubjectData
|
3
|
+
|
4
|
+
def subject_data_hash
|
5
|
+
if attributes.has_key?(:subject_datas)
|
6
|
+
Hash[subject_datas.map(&:attributes).map {|attrs| [attrs[:subject_field_label].to_s.underscore, attrs[:value]] }]
|
7
|
+
else
|
8
|
+
{}
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def field(field_name)
|
13
|
+
(attributes["subject_datas"] || []).detect do |sd|
|
14
|
+
sd.subject_field_label == field_name.to_s
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
data/lib/highrise/pagination.rb
CHANGED
@@ -38,7 +38,8 @@ module Highrise
|
|
38
38
|
options[:params][:n] = 0
|
39
39
|
|
40
40
|
loop do
|
41
|
-
|
41
|
+
records = find(:all, options)
|
42
|
+
if records && records.any?
|
42
43
|
records.each { |record| yield record }
|
43
44
|
options[:params][:n] += records.size
|
44
45
|
else
|
data/lib/highrise/person.rb
CHANGED
@@ -1,15 +1,9 @@
|
|
1
1
|
module Highrise
|
2
2
|
class Person < Subject
|
3
|
-
require 'highrise/rfc822'
|
4
3
|
include Pagination
|
5
4
|
include Taggable
|
6
5
|
include Searchable
|
7
|
-
include
|
8
|
-
|
9
|
-
def initialize(*args)
|
10
|
-
super(*args)
|
11
|
-
create_subject_fields_accessors
|
12
|
-
end
|
6
|
+
include HasSubjectData
|
13
7
|
|
14
8
|
def company
|
15
9
|
Company.find(company_id) if company_id
|
@@ -58,16 +52,5 @@ module Highrise
|
|
58
52
|
end
|
59
53
|
end
|
60
54
|
|
61
|
-
def create_subject_fields_accessors
|
62
|
-
subject_data_fields.each do |subject_field_name, value|
|
63
|
-
# for this instance only
|
64
|
-
singleton_class.instance_eval do
|
65
|
-
define_method subject_field_name do
|
66
|
-
value
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
55
|
end
|
73
56
|
end
|
data/lib/highrise/searchable.rb
CHANGED
@@ -10,12 +10,13 @@ module Highrise
|
|
10
10
|
# Available criteria are: city, state, country, zip, phone, email
|
11
11
|
def search(options = {})
|
12
12
|
raise ArgumentError, "cannot convert #{options}:#{options.class} to hash" if options.kind_of?(String)
|
13
|
-
search_params = options.inject({}) { |h, (k, v)| h["criteria[#{k}]"] = v; h }
|
14
13
|
# This might have to be changed in the future if other non-pagable resources become searchable
|
15
|
-
|
16
|
-
|
14
|
+
options[:kind] ||= collection_name
|
15
|
+
find_options = {:from => "/parties/search.xml", :params => options}
|
16
|
+
if respond_to?(:find_all_across_pages)
|
17
|
+
find_all_across_pages(find_options)
|
17
18
|
else
|
18
|
-
|
19
|
+
find(:all, find_options)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
@@ -1,23 +1,5 @@
|
|
1
1
|
module Highrise
|
2
2
|
class SubjectData < Base
|
3
|
-
|
4
|
-
module Mixin
|
5
|
-
|
6
|
-
def subject_data_fields
|
7
|
-
if attributes.has_key?(:subject_datas)
|
8
|
-
Hash[subject_datas.map(&:attributes).map {|attrs| [attrs[:subject_field_label].to_s.underscore, attrs[:value]] }]
|
9
|
-
else
|
10
|
-
{}
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def field(field_name)
|
15
|
-
(attributes["subject_datas"] || []).detect do |sd|
|
16
|
-
sd.subject_field_label == field_name.to_s
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
3
|
end
|
23
4
|
end
|
5
|
+
|
data/lib/highrise/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peterosullivan-highrise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 3.0.
|
9
|
+
- 7
|
10
|
+
version: 3.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Marcos Tapaj\xC3\xB3s"
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/highrise/deal_category.rb
|
101
101
|
- lib/highrise/email.rb
|
102
102
|
- lib/highrise/group.rb
|
103
|
+
- lib/highrise/has_subject_data.rb
|
103
104
|
- lib/highrise/kase.rb
|
104
105
|
- lib/highrise/membership.rb
|
105
106
|
- lib/highrise/note.rb
|
@@ -111,6 +112,7 @@ files:
|
|
111
112
|
- lib/highrise/searchable.rb
|
112
113
|
- lib/highrise/subject.rb
|
113
114
|
- lib/highrise/subject_data.rb
|
115
|
+
- lib/highrise/subject_field.rb
|
114
116
|
- lib/highrise/tag.rb
|
115
117
|
- lib/highrise/taggable.rb
|
116
118
|
- lib/highrise/task.rb
|