effective_addresses 1.8.4 → 1.8.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff3f966afab7e2c3b8199c448af7fea1ceee0411
4
- data.tar.gz: ff0c0b5f1b79f540088db80a4199204873ff6e1c
3
+ metadata.gz: 10e0a18e1057bb62aa50278891d207d8cfb1420a
4
+ data.tar.gz: 09d6a1fa25e100cc1e1690d53015799d0447d874
5
5
  SHA512:
6
- metadata.gz: aafa438364c21b562ab22fbfd5456f5ea760aeec032d243daa5f14571e9cb6cb1e77c62b249425b6a7554a4230648f2ff78cf4975328c0f6bbeb1eb78225e011
7
- data.tar.gz: 12fc4c7ad7132879f28e982aa7e4a658879c5e670f2d1eac59db063997e09db6a7d17a2a4389b0dc320f33751385085261487bbc3ead260c4cdfd84b3bd90bcb
6
+ metadata.gz: 52d258748596da058b01e2a092f810ade1451171bb56035dec4b39292530aa603a88574c5ab60ae27d7bbf5dce030c872d6efae6b14035e4dbd2d3b10e322b10
7
+ data.tar.gz: 6af33db771036fd87c82e991917d8b96cac6d7ab461b715587752d8dcf6d7b9d776b9de058093bc84b1cbd1e4d3e12da5fb7c66506720b1a5429ad45e835df3a
@@ -37,7 +37,7 @@ module EffectiveAddressesHelper
37
37
  end
38
38
  end
39
39
 
40
- def region_options_for_simple_form_select(regions = nil)
40
+ def effective_address_regions_collection(regions = nil)
41
41
  if regions.present?
42
42
  countries = regions
43
43
  elsif EffectiveAddresses.country_codes == :all
@@ -46,20 +46,25 @@ module EffectiveAddressesHelper
46
46
  countries = Carmen::Country.all.select { |c| (EffectiveAddresses.country_codes || []).include?(c.code) }
47
47
  end
48
48
 
49
- collection = countries.map { |c| [c.name, c.code] }.sort! { |a, b| a.first <=> b.first }
50
-
51
49
  if regions.blank? && EffectiveAddresses.country_codes_priority.present?
52
- collection.insert(0, ['---------------------', '', :disabled])
50
+ countries = countries.reject { |c| EffectiveAddresses.country_codes_priority.include?(c.code) }
51
+ end
53
52
 
54
- EffectiveAddresses.country_codes_priority.reverse.each do |code|
55
- if (country = Carmen::Country.coded(code))
56
- collection.insert(0, [country.name, country.code])
57
- end
58
- end
53
+ countries = countries.map { |c| [c.name, c.code] }.sort! { |a, b| a.first <=> b.first }
54
+
55
+ if regions.blank? && EffectiveAddresses.country_codes_priority.present?
56
+ countries.unshift(*
57
+ EffectiveAddresses.country_codes_priority.map do |code|
58
+ country = Carmen::Country.coded(code)
59
+ [country.name, country.code]
60
+ end + [['-------------------', '-', disabled: :disabled]]
61
+ )
59
62
  end
60
63
 
61
- collection
64
+ countries
62
65
  end
66
+ alias_method :effective_address_countries_collection, :effective_address_regions_collection
67
+ alias_method :region_options_for_simple_form_select, :effective_address_regions_collection
63
68
 
64
69
  end
65
70
 
@@ -56,10 +56,14 @@ module ActsAsAddressable
56
56
  end
57
57
  end
58
58
 
59
- if ((categories.try(:keys) rescue nil) || categories).include?('billing') && ((categories.try(:keys) rescue nil) || categories).include?('shipping')
59
+ # [:billing_address, :shipping_address]
60
+ address_names = (categories.respond_to?(:keys) ? categories.keys : categories).map { |category| (category.to_s + '_address').to_sym }
61
+
62
+ if address_names.include?(:billing_address) && address_names.include?(:shipping_address)
60
63
  self.send(:define_method, :shipping_address_same_as_billing?) { billing_address == shipping_address }
61
64
  end
62
65
 
66
+ self.send(:define_method, :effective_address_names) { address_names }
63
67
  end
64
68
 
65
69
  module ClassMethods
@@ -8,6 +8,29 @@ module Effective
8
8
 
9
9
  belongs_to :addressable, polymorphic: true, touch: true
10
10
 
11
+ if defined?(EffectiveResources)
12
+ effective_resource do
13
+ category :string
14
+
15
+ full_name :string
16
+ address1 :string
17
+ address2 :string
18
+
19
+ if EffectiveAddresses.use_address3
20
+ address3 :string
21
+ end
22
+
23
+ city :string
24
+ state_code :string
25
+ country_code :string
26
+ postal_code :string
27
+
28
+ shipping_address_same_as_billing permitted: true
29
+
30
+ timestamps
31
+ end
32
+ end
33
+
11
34
  validates :category, :address1, :city, :country_code, :postal_code, presence: true, if: Proc.new { |address| address.present? }
12
35
  validates :state_code, presence: true, if: Proc.new { |address| address.present? && (address.country_code.blank? || Carmen::Country.coded(address.country_code).try(:subregions).present?) }
13
36
 
@@ -126,7 +149,7 @@ module Effective
126
149
  if defined?(::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES) # Rails 5
127
150
  ::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES.include?(shipping_address_same_as_billing)
128
151
  else
129
- ActiveRecord::Type::Boolean.new.cast(shipping_address_same_as_billing)
152
+ ::ActiveRecord::Type::Boolean.new.cast(shipping_address_same_as_billing)
130
153
  end
131
154
  end
132
155
  end
@@ -26,7 +26,7 @@
26
26
  disabled: same_as_billing,
27
27
  wrapper: wrapper_options
28
28
 
29
- - if fa.object.respond_to?(:address3)
29
+ - if fa.object.respond_to?(:address3) && EffectiveAddresses.use_address3
30
30
  = fa.text_field :address3,
31
31
  label: false,
32
32
  required: false,
@@ -41,7 +41,7 @@
41
41
 
42
42
  .row
43
43
  .col-md-4
44
- = fa.select :country_code, region_options_for_simple_form_select(),
44
+ = fa.select :country_code, effective_address_countries_collection(),
45
45
  label: 'Country',
46
46
  required: required,
47
47
  disabled: same_as_billing,
@@ -50,7 +50,7 @@
50
50
 
51
51
  .col-md-5
52
52
  - if fa.object.try(:country_code).present?
53
- = fa.select :state_code, region_options_for_simple_form_select(Carmen::Country.coded(fa.object.country_code).subregions),
53
+ = fa.select :state_code, effective_address_regions_collection(Carmen::Country.coded(fa.object.country_code).subregions),
54
54
  label: 'State / Province',
55
55
  required: required,
56
56
  disabled: same_as_billing,
@@ -41,7 +41,7 @@
41
41
  = fa.input :country_code,
42
42
  as: (defined?(EffectiveFormInputs) ? :effective_select : :select),
43
43
  required: required,
44
- collection: region_options_for_simple_form_select(),
44
+ collection: effective_address_countries_collection(),
45
45
  input_html: {'data-effective-address-country' => uuid},
46
46
  disabled: shipping_address_same_as_billing,
47
47
  wrapper_html: { style: ('display: none;' if shipping_address_same_as_billing) }
@@ -51,7 +51,7 @@
51
51
  = fa.input :state_code,
52
52
  as: (defined?(EffectiveFormInputs) ? :effective_select : :select),
53
53
  required: required,
54
- collection: region_options_for_simple_form_select(Carmen::Country.coded(fa.object.country_code).subregions),
54
+ collection: effective_address_regions_collection(Carmen::Country.coded(fa.object.country_code).subregions),
55
55
  prompt: 'Please choose',
56
56
  input_html: {'data-effective-address-state' => uuid},
57
57
  input_js: { placeholder: 'Please choose' },
@@ -6,12 +6,15 @@ EffectiveAddresses.setup do |config|
6
6
  # (can be overridden on a per address basis)
7
7
  config.use_full_name = true
8
8
 
9
+ # A 3rd address field
10
+ config.use_address3 = false
11
+
9
12
  # Country codes to display in country_select dropdowns.
10
13
  config.country_codes = :all
11
14
  #config.country_codes = ['US', 'CA'] # Or you can be more selective...
12
15
 
13
16
  # Select these countries ontop of the others
14
- config.country_codes_priority = ['US', 'CA'] # nil for no priority countries
17
+ # config.country_codes_priority = ['US', 'CA']
15
18
 
16
19
  # Force this country to be preselected on any new address forms.
17
20
  # Valid values are: country code, country name, or nil.
@@ -1,3 +1,3 @@
1
1
  module EffectiveAddresses
2
- VERSION = '1.8.4'.freeze
2
+ VERSION = '1.8.5'.freeze
3
3
  end
@@ -10,6 +10,7 @@ module EffectiveAddresses
10
10
  mattr_accessor :country_codes_priority
11
11
  mattr_accessor :addresses_table_name
12
12
  mattr_accessor :use_full_name
13
+ mattr_accessor :use_address3
13
14
  mattr_accessor :simple_form_options
14
15
  mattr_accessor :validate_postal_code_format
15
16
  mattr_accessor :pre_selected_country
@@ -20,7 +21,7 @@ module EffectiveAddresses
20
21
  end
21
22
 
22
23
  def self.permitted_params
23
- [:address1, :address2, :city, :country_code, :state_code, :postal_code, :full_name, :shipping_address_same_as_billing]
24
+ [:address1, :address2, :address3, :city, :country_code, :state_code, :postal_code, :full_name, :shipping_address_same_as_billing]
24
25
  end
25
26
 
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_addresses
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.4
4
+ version: 1.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-27 00:00:00.000000000 Z
11
+ date: 2018-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  version: '0'
105
105
  requirements: []
106
106
  rubyforge_project:
107
- rubygems_version: 2.5.2.3
107
+ rubygems_version: 2.4.5.1
108
108
  signing_key:
109
109
  specification_version: 4
110
110
  summary: Extend any ActiveRecord object to have one or more named addresses. Includes