spree_address_book 0.70.0 → 1.0.0

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.
Files changed (37) hide show
  1. data/.gitignore +1 -2
  2. data/.rspec +3 -0
  3. data/Gemfile +6 -0
  4. data/Gemfile.lock +228 -0
  5. data/Rakefile +10 -57
  6. data/Versionfile +1 -0
  7. data/app/assets/javascripts/store/spree_address_book.js +53 -0
  8. data/app/assets/stylesheets/store/spree_address_book.scss +12 -0
  9. data/app/controllers/{addresses_controller.rb → spree/addresses_controller.rb} +1 -1
  10. data/app/controllers/{checkout_controller_decorator.rb → spree/checkout_controller_decorator.rb} +4 -2
  11. data/app/helpers/checkout_helper_decorator.rb +4 -4
  12. data/app/models/address_decorator.rb +4 -4
  13. data/app/models/order_decorator.rb +7 -7
  14. data/{lib → app/models/spree}/address_ability.rb +2 -2
  15. data/app/models/spree/address_book_configuration.rb +8 -0
  16. data/app/models/user_decorator.rb +1 -1
  17. data/app/overrides/views_decorator.rb +2 -2
  18. data/app/views/spree/addresses/_form.html.erb +13 -0
  19. data/app/views/{addresses → spree/addresses}/destroy.js.erb +0 -0
  20. data/app/views/{addresses → spree/addresses}/edit.html.erb +1 -1
  21. data/app/views/spree/checkout/_address.html.erb +45 -0
  22. data/app/views/spree/users/_addresses.html.erb +22 -0
  23. data/config/routes.rb +1 -1
  24. data/db/migrate/20110302102208_add_user_id_and_deleted_at_to_addresses.rb +8 -2
  25. data/features/support/env.rb +3 -22
  26. data/lib/generators/spree_address_book/install_generator.rb +8 -0
  27. data/lib/spree_address_book.rb +17 -11
  28. data/spec/controllers/spree/checkout_controller_spec.rb +52 -0
  29. data/spec/models/address_spec.rb +2 -2
  30. data/spec/models/order_spec.rb +21 -0
  31. data/spec/spec_helper.rb +15 -10
  32. data/spree_address_book.gemspec +8 -3
  33. metadata +85 -20
  34. data/app/assets/javascripts/store/checkout.js +0 -73
  35. data/app/views/addresses/_form.html.erb +0 -15
  36. data/app/views/checkout/_address.html.erb +0 -85
  37. data/app/views/users/_addresses.html.erb +0 -20
data/.gitignore CHANGED
@@ -8,5 +8,4 @@ tmp
8
8
  nbproject
9
9
  *.swp
10
10
  *.bak
11
- spec/test_app
12
- Gemfile
11
+ spec/dummy
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format
3
+ progress
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem 'spree', '~> 1.0.0'
6
+ gem 'sqlite3'
data/Gemfile.lock ADDED
@@ -0,0 +1,228 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ spree_address_book (1.0.0.rc)
5
+ spree_auth (~> 1.0.0)
6
+ spree_core (~> 1.0.0)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ actionmailer (3.1.4)
12
+ actionpack (= 3.1.4)
13
+ mail (~> 2.3.0)
14
+ actionpack (3.1.4)
15
+ activemodel (= 3.1.4)
16
+ activesupport (= 3.1.4)
17
+ builder (~> 3.0.0)
18
+ erubis (~> 2.7.0)
19
+ i18n (~> 0.6)
20
+ rack (~> 1.3.6)
21
+ rack-cache (~> 1.1)
22
+ rack-mount (~> 0.8.2)
23
+ rack-test (~> 0.6.1)
24
+ sprockets (~> 2.0.3)
25
+ active_utils (1.0.3)
26
+ activesupport (>= 2.3.11)
27
+ i18n
28
+ activemerchant (1.20.1)
29
+ active_utils (>= 1.0.1)
30
+ activesupport (>= 2.3.11)
31
+ braintree (>= 2.0.0)
32
+ builder (>= 2.0.0)
33
+ i18n
34
+ json (>= 1.5.1)
35
+ money (<= 3.7.1)
36
+ activemodel (3.1.4)
37
+ activesupport (= 3.1.4)
38
+ builder (~> 3.0.0)
39
+ i18n (~> 0.6)
40
+ activerecord (3.1.4)
41
+ activemodel (= 3.1.4)
42
+ activesupport (= 3.1.4)
43
+ arel (~> 2.2.3)
44
+ tzinfo (~> 0.3.29)
45
+ activeresource (3.1.4)
46
+ activemodel (= 3.1.4)
47
+ activesupport (= 3.1.4)
48
+ activesupport (3.1.4)
49
+ multi_json (~> 1.0)
50
+ acts_as_list (0.1.4)
51
+ arel (2.2.3)
52
+ bcrypt-ruby (3.0.1)
53
+ braintree (2.15.0)
54
+ builder (>= 2.0.0)
55
+ builder (3.0.0)
56
+ cancan (1.6.7)
57
+ capybara (1.1.2)
58
+ mime-types (>= 1.16)
59
+ nokogiri (>= 1.3.3)
60
+ rack (>= 1.0.0)
61
+ rack-test (>= 0.5.4)
62
+ selenium-webdriver (~> 2.0)
63
+ xpath (~> 0.1.4)
64
+ childprocess (0.3.1)
65
+ ffi (~> 1.0.6)
66
+ cocaine (0.2.1)
67
+ deface (0.8.0)
68
+ nokogiri (~> 1.5.0)
69
+ rails (>= 3.0.9)
70
+ devise (1.4.8)
71
+ bcrypt-ruby (~> 3.0)
72
+ orm_adapter (~> 0.0.3)
73
+ warden (~> 1.0.3)
74
+ diff-lcs (1.1.3)
75
+ erubis (2.7.0)
76
+ factory_girl (2.6.0)
77
+ activesupport (>= 2.3.9)
78
+ ffaker (1.12.1)
79
+ ffi (1.0.11)
80
+ highline (1.6.8)
81
+ hike (1.2.1)
82
+ i18n (0.6.0)
83
+ jquery-rails (1.0.19)
84
+ railties (~> 3.0)
85
+ thor (~> 0.14)
86
+ json (1.6.6)
87
+ json_pure (1.6.5)
88
+ kaminari (0.13.0)
89
+ actionpack (>= 3.0.0)
90
+ activesupport (>= 3.0.0)
91
+ railties (>= 3.0.0)
92
+ mail (2.3.3)
93
+ i18n (>= 0.4.0)
94
+ mime-types (~> 1.16)
95
+ treetop (~> 1.4.8)
96
+ meta_search (1.1.1)
97
+ actionpack (~> 3.1.0)
98
+ activerecord (~> 3.1.0)
99
+ activesupport (~> 3.1.0)
100
+ polyamorous (~> 0.5.0)
101
+ mime-types (1.18)
102
+ money (3.7.1)
103
+ i18n (~> 0.4)
104
+ multi_json (1.2.0)
105
+ nested_set (1.6.8)
106
+ activerecord (>= 3.0.0)
107
+ railties (>= 3.0.0)
108
+ nokogiri (1.5.2)
109
+ orm_adapter (0.0.7)
110
+ paperclip (2.5.0)
111
+ activerecord (>= 2.3.0)
112
+ activesupport (>= 2.3.2)
113
+ cocaine (>= 0.0.2)
114
+ mime-types
115
+ polyamorous (0.5.0)
116
+ activerecord (~> 3.0)
117
+ polyglot (0.3.3)
118
+ rack (1.3.6)
119
+ rack-cache (1.2)
120
+ rack (>= 0.4)
121
+ rack-mount (0.8.3)
122
+ rack (>= 1.0.0)
123
+ rack-ssl (1.3.2)
124
+ rack
125
+ rack-test (0.6.1)
126
+ rack (>= 1.0)
127
+ rails (3.1.4)
128
+ actionmailer (= 3.1.4)
129
+ actionpack (= 3.1.4)
130
+ activerecord (= 3.1.4)
131
+ activeresource (= 3.1.4)
132
+ activesupport (= 3.1.4)
133
+ bundler (~> 1.0)
134
+ railties (= 3.1.4)
135
+ railties (3.1.4)
136
+ actionpack (= 3.1.4)
137
+ activesupport (= 3.1.4)
138
+ rack-ssl (~> 1.3.2)
139
+ rake (>= 0.8.7)
140
+ rdoc (~> 3.4)
141
+ thor (~> 0.14.6)
142
+ rake (0.9.2.2)
143
+ rdoc (3.12)
144
+ json (~> 1.4)
145
+ rspec (2.8.0)
146
+ rspec-core (~> 2.8.0)
147
+ rspec-expectations (~> 2.8.0)
148
+ rspec-mocks (~> 2.8.0)
149
+ rspec-core (2.8.0)
150
+ rspec-expectations (2.8.0)
151
+ diff-lcs (~> 1.1.2)
152
+ rspec-mocks (2.8.0)
153
+ rspec-rails (2.8.1)
154
+ actionpack (>= 3.0)
155
+ activesupport (>= 3.0)
156
+ railties (>= 3.0)
157
+ rspec (~> 2.8.0)
158
+ rubyzip (0.9.6.1)
159
+ selenium-webdriver (2.12.2)
160
+ childprocess (>= 0.2.1)
161
+ ffi (~> 1.0.9)
162
+ json_pure
163
+ rubyzip
164
+ spree (1.0.3)
165
+ spree_api (= 1.0.3)
166
+ spree_auth (= 1.0.3)
167
+ spree_cmd (= 1.0.3)
168
+ spree_core (= 1.0.3)
169
+ spree_dash (= 1.0.3)
170
+ spree_promo (= 1.0.3)
171
+ spree_sample (= 1.0.3)
172
+ spree_api (1.0.3)
173
+ spree_auth (= 1.0.3)
174
+ spree_core (= 1.0.3)
175
+ spree_auth (1.0.3)
176
+ cancan (= 1.6.7)
177
+ devise (= 1.4.8)
178
+ spree_core (= 1.0.3)
179
+ spree_cmd (1.0.3)
180
+ spree_core (1.0.3)
181
+ activemerchant (= 1.20.1)
182
+ acts_as_list (= 0.1.4)
183
+ deface (>= 0.7.2)
184
+ ffaker (~> 1.12.0)
185
+ highline (= 1.6.8)
186
+ jquery-rails (>= 1.0.18, <= 1.0.19)
187
+ kaminari (>= 0.13.0)
188
+ meta_search (= 1.1.1)
189
+ nested_set (= 1.6.8)
190
+ paperclip (= 2.5.0)
191
+ rails (>= 3.1.1, <= 3.1.4)
192
+ state_machine (= 1.1.1)
193
+ stringex (~> 1.3.0)
194
+ spree_dash (1.0.3)
195
+ spree_core (= 1.0.3)
196
+ spree_promo (1.0.3)
197
+ spree_auth (= 1.0.3)
198
+ spree_core (= 1.0.3)
199
+ spree_sample (1.0.3)
200
+ spree_core (= 1.0.3)
201
+ sprockets (2.0.3)
202
+ hike (~> 1.2)
203
+ rack (~> 1.0)
204
+ tilt (~> 1.1, != 1.3.0)
205
+ sqlite3 (1.3.5)
206
+ state_machine (1.1.1)
207
+ stringex (1.3.2)
208
+ thor (0.14.6)
209
+ tilt (1.3.3)
210
+ treetop (1.4.10)
211
+ polyglot
212
+ polyglot (>= 0.3.1)
213
+ tzinfo (0.3.33)
214
+ warden (1.0.6)
215
+ rack (>= 1.0)
216
+ xpath (0.1.4)
217
+ nokogiri (~> 1.3)
218
+
219
+ PLATFORMS
220
+ ruby
221
+
222
+ DEPENDENCIES
223
+ capybara
224
+ factory_girl (~> 2.6)
225
+ rspec-rails (~> 2.7)
226
+ spree (~> 1.0.0)
227
+ spree_address_book!
228
+ sqlite3
data/Rakefile CHANGED
@@ -1,31 +1,18 @@
1
- require 'rubygems'
1
+ # encoding: utf-8
2
2
  require 'rake'
3
3
  require 'rake/testtask'
4
4
  require 'rake/packagetask'
5
- require 'rake/gempackagetask'
5
+ require 'rubygems/package_task'
6
+ require 'rspec/core/rake_task'
7
+ require 'spree/core/testing_support/common_rake'
6
8
 
7
- gemfile = File.expand_path('../spec/test_app/Gemfile', __FILE__)
8
- if File.exists?(gemfile) && (%w(spec cucumber).include?(ARGV.first.to_s) || ARGV.size == 0)
9
- require 'bundler'
10
- ENV['BUNDLE_GEMFILE'] = gemfile
11
- Bundler.setup
9
+ RSpec::Core::RakeTask.new
12
10
 
13
- require 'rspec'
14
- require 'rspec/core/rake_task'
15
- RSpec::Core::RakeTask.new
16
-
17
- require 'cucumber/rake/task'
18
- Cucumber::Rake::Task.new do |t|
19
- t.cucumber_opts = %w{--format progress}
20
- end
21
- end
22
-
23
- desc "Default Task"
24
- task :default => [:spec, :cucumber ]
11
+ task :default => [:spec]
25
12
 
26
13
  spec = eval(File.read('spree_address_book.gemspec'))
27
14
 
28
- Rake::GemPackageTask.new(spec) do |p|
15
+ Gem::PackageTask.new(spec) do |p|
29
16
  p.gem_spec = spec
30
17
  end
31
18
 
@@ -36,42 +23,8 @@ task :release => :package do
36
23
  Rake::Task['gem:push'].invoke
37
24
  end
38
25
 
39
- desc "Default Task"
40
- task :default => [ :spec ]
41
-
42
- desc "Regenerates a rails 3 app for testing"
26
+ desc "Generates a dummy app for testing"
43
27
  task :test_app do
44
- require '../spree/lib/generators/spree/test_app_generator'
45
- class AddressBookTestAppGenerator < Spree::Generators::TestAppGenerator
46
-
47
- def install_gems
48
- inside "test_app" do
49
- run 'rake spree_core:install'
50
- run 'rake spree_auth:install'
51
- run 'rake spree_address_book:install'
52
- end
53
- end
54
-
55
- def migrate_db
56
- run_migrations
57
- end
58
-
59
- protected
60
- def full_path_for_local_gems
61
- <<-gems
62
- gem 'spree_core', :path => \'#{File.join(File.dirname(__FILE__), "../spree/", "core")}\'
63
- gem 'spree_auth', :path => \'#{File.join(File.dirname(__FILE__), "../spree/", "auth")}\'
64
- gem 'spree_address_book', :path => \'#{File.dirname(__FILE__)}\'
65
- gems
66
- end
67
-
68
- end
69
- AddressBookTestAppGenerator.start
70
- end
71
-
72
- namespace :test_app do
73
- desc 'Rebuild test and cucumber databases'
74
- task :rebuild_dbs do
75
- system("cd spec/test_app && rake db:drop db:migrate RAILS_ENV=test && rake db:drop db:migrate RAILS_ENV=cucumber")
76
- end
28
+ ENV['LIB_NAME'] = 'spree_address_book'
29
+ Rake::Task['common:test_app'].invoke
77
30
  end
data/Versionfile CHANGED
@@ -2,3 +2,4 @@
2
2
  "0.50.x" => { :version => "0.50.2" }
3
3
  "0.60.x" => { :version => "0.50.2" }
4
4
  "0.70.x" => { :version => "0.70.0" }
5
+ "1.0.x" => { :version => "1.0.0" }
@@ -0,0 +1,53 @@
1
+ (function($) {
2
+ $(document).ready(function(){
3
+ if ($(".select_address").length) {
4
+ $('input#order_use_billing').unbind("click");
5
+ $(".inner").hide();
6
+ $(".inner input").prop("disabled", true);
7
+ $(".inner select").prop("disabled", true);
8
+ if ($('input#order_use_billing').is(':checked')) {
9
+ $("#shipping .select_address").hide();
10
+ }
11
+
12
+ $('input#order_use_billing').click(function() {
13
+ if ($(this).is(':checked')) {
14
+ $("#shipping .select_address").hide();
15
+ hide_address_form('shipping');
16
+ } else {
17
+ $("#shipping .select_address").show();
18
+ if ($("input[name='order[ship_address_id]']:checked").val() == '0') {
19
+ show_address_form('shipping');
20
+ }
21
+ }
22
+ });
23
+
24
+ $("input[name='order[bill_address_id]']:radio").change(function(){
25
+ if ($("input[name='order[bill_address_id]']:checked").val() == '0') {
26
+ show_address_form('billing');
27
+ } else {
28
+ hide_address_form('billing');
29
+ }
30
+ });
31
+
32
+ $("input[name='order[ship_address_id]']:radio").change(function(){
33
+ if ($("input[name='order[ship_address_id]']:checked").val() == '0') {
34
+ show_address_form('shipping');
35
+ } else {
36
+ hide_address_form('shipping');
37
+ }
38
+ });
39
+ }
40
+ });
41
+
42
+ function hide_address_form(address_type){
43
+ $("#" + address_type + " .inner").hide();
44
+ $("#" + address_type + " .inner input").prop("disabled", true);
45
+ $("#" + address_type + " .inner select").prop("disabled", true);
46
+ }
47
+
48
+ function show_address_form(address_type){
49
+ $("#" + address_type + " .inner").show();
50
+ $("#" + address_type + " .inner input").prop("disabled", false);
51
+ $("#" + address_type + " .inner select").prop("disabled", false);
52
+ }
53
+ })(jQuery);
@@ -0,0 +1,12 @@
1
+ div.inner {
2
+ input[type=text], select { width: 80%; }
3
+ }
4
+
5
+ div#checkout #checkout_form_address {
6
+ #billing, #shipping {
7
+ .select_address label { float: none; }
8
+ input[type=radio] { width: auto; }
9
+ }
10
+ }
11
+
12
+ .hidden { display: none; }
@@ -1,4 +1,4 @@
1
- class AddressesController < Spree::BaseController
1
+ class Spree::AddressesController < Spree::BaseController
2
2
  rescue_from ActiveRecord::RecordNotFound, :with => :render_404
3
3
  load_and_authorize_resource
4
4
 
@@ -1,4 +1,4 @@
1
- CheckoutController.class_eval do
1
+ Spree::CheckoutController.class_eval do
2
2
  after_filter :normalize_addresses, :only => :update
3
3
  before_filter :set_addresses, :only => :update
4
4
 
@@ -6,7 +6,7 @@ CheckoutController.class_eval do
6
6
 
7
7
  def set_addresses
8
8
  return unless params[:order] && params[:state] == "address"
9
-
9
+
10
10
  if params[:order][:ship_address_id].to_i > 0
11
11
  params[:order].delete(:ship_address_attributes)
12
12
  else
@@ -18,12 +18,14 @@ CheckoutController.class_eval do
18
18
  else
19
19
  params[:order].delete(:bill_address_id)
20
20
  end
21
+
21
22
  end
22
23
 
23
24
  def normalize_addresses
24
25
  return unless params[:state] == "address" && @order.bill_address_id && @order.ship_address_id
25
26
  @order.bill_address.reload
26
27
  @order.ship_address.reload
28
+
27
29
  # ensure that there is no validation errors and addresses was saved
28
30
  return unless @order.bill_address && @order.ship_address
29
31
 
@@ -1,10 +1,10 @@
1
- CheckoutHelper.module_eval do
1
+ Spree::CheckoutHelper.module_eval do
2
2
  def address_field(form, method, id_prefix = "b", &handler)
3
- content_tag :p, :id => [id_prefix, method].join, :class => "field" do
3
+ content_tag :p, :id => [id_prefix, method].join('_'), :class => "field" do
4
4
  if handler
5
5
  handler.call
6
6
  else
7
- is_required = Address.required_fields.include?(method)
7
+ is_required = Spree::Address.required_fields.include?(method)
8
8
  separator = is_required ? '<span class="req">*</span><br />' : '<br />'
9
9
  form.label(method) + separator.html_safe +
10
10
  form.text_field(method, :class => is_required ? 'required' : nil)
@@ -13,7 +13,7 @@ CheckoutHelper.module_eval do
13
13
  end
14
14
 
15
15
  def address_state(form, country)
16
- country ||= Country.find(Spree::Config[:default_country_id])
16
+ country ||= Spree::Country.find(Spree::Config[:default_country_id])
17
17
  have_states = !country.states.empty?
18
18
  state_elements = [
19
19
  form.collection_select(:state_id, country.states.order(:name),