solidus_address_book 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 (36) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +23 -0
  3. data/README.md +49 -0
  4. data/Rakefile +23 -0
  5. data/app/assets/javascripts/spree/frontend/solidus_address_book.js.erb +59 -0
  6. data/app/assets/stylesheets/spree/frontend/solidus_address_book.scss +92 -0
  7. data/app/controllers/spree/addresses_controller.rb +84 -0
  8. data/app/controllers/spree/checkout_controller_decorator.rb +65 -0
  9. data/app/helpers/spree/addresses_helper.rb +39 -0
  10. data/app/models/concerns/solidus_address_book/address.rb +18 -0
  11. data/app/models/concerns/solidus_address_book/permitted_attributes_concern.rb +11 -0
  12. data/app/models/permitted_attributes_decorator.rb +1 -0
  13. data/app/models/spree/address_ability.rb +15 -0
  14. data/app/models/spree/address_decorator.rb +83 -0
  15. data/app/models/spree/order_decorator.rb +109 -0
  16. data/app/models/spree/user_decorator.rb +11 -0
  17. data/app/overrides/add_address_book_to_my_account.rb +9 -0
  18. data/app/views/spree/addresses/_form.html.erb +114 -0
  19. data/app/views/spree/addresses/destroy.js.erb +2 -0
  20. data/app/views/spree/addresses/edit.html.erb +29 -0
  21. data/app/views/spree/addresses/new.html.erb +29 -0
  22. data/app/views/spree/checkout/_address.html.erb +75 -0
  23. data/app/views/spree/users/_addresses.html.erb +36 -0
  24. data/config/locales/de.yml +15 -0
  25. data/config/locales/en.yml +28 -0
  26. data/config/locales/pt-BR.yml +3 -0
  27. data/config/locales/ru.yml +13 -0
  28. data/config/routes.rb +9 -0
  29. data/db/migrate/20110302102208_add_user_id_and_deleted_at_to_addresses.rb +13 -0
  30. data/db/migrate/20190619191704_add_label_to_addresses.rb +7 -0
  31. data/lib/generators/solidus_address_book/install_generator.rb +30 -0
  32. data/lib/solidus_address_book.rb +6 -0
  33. data/lib/solidus_address_book/configuration.rb +8 -0
  34. data/lib/solidus_address_book/engine.rb +24 -0
  35. data/lib/solidus_address_book/version.rb +5 -0
  36. metadata +354 -0
@@ -0,0 +1,75 @@
1
+ <div class="row">
2
+ <% ['billing', 'shipping'].each do |address_type|
3
+ next if address_type == 'billing' && SolidusAddressBook::Config[:disable_bill_address]
4
+ address_name = "#{address_type[0...4]}_address" %>
5
+
6
+ <div class="columns alpha twelve" data-hook="<%= address_type %>_fieldset_wrapper">
7
+ <div class="panel panel-default" id="<%= address_type %>" data-hook>
8
+ <div class="panel-heading">
9
+ <h3 class="panel-title"><%= I18n.t(address_type + "_address", scope: :spree) %></h3>
10
+ <% if address_type == 'shipping' && !SolidusAddressBook::Config[:disable_bill_address] %>
11
+ <p class="field checkbox" data-hook="use_billing">
12
+ <%= label_tag :order_use_billing, id: 'use_billing' do %>
13
+ <%= check_box_tag 'order[use_billing]', '1', @order.shipping_eq_billing_address? %>
14
+ <%= t('spree.use_billing_address') %>
15
+ <% end %>
16
+ </p>
17
+ <% end %>
18
+ </div>
19
+
20
+ <div class="panel-body">
21
+ <% if @user_addresses.present? %>
22
+ <div class="select_address">
23
+ <ul class="form-group">
24
+ <% @user_addresses.each_with_index do |address, idx| %>
25
+ <li class='address-wrapper' id="<%= [address_type, dom_id(address)].join('_') %>">
26
+ <label>
27
+ <%= form.radio_button "#{address_name}_id", address.id, checked: (address.id == try_spree_current_user["#{address_name}_id"] || idx == 0) %>
28
+ <span class='address-label'><%= address&.label&.titleize || I18n.t('spree.address_index', number: idx + 1) %></span>
29
+ </label>
30
+
31
+ <span class='address-text'>
32
+ <%= address %>
33
+ </span>
34
+
35
+ <span class='edit-address'>
36
+ <a href="<%= edit_address_path(address) %>" data-hook="edit_address">
37
+ <%= t('spree.edit') %>
38
+ </a>
39
+ </span>
40
+ </li>
41
+ <% end %>
42
+
43
+ <li class='address-wrapper'>
44
+ <span id="other-address">
45
+ <label>
46
+ <%= form.radio_button "#{address_name}_id", 0 %>
47
+ <%= t('spree.other_address') %>
48
+ </label>
49
+ </span>
50
+ </li>
51
+ </ul>
52
+ </div>
53
+ <% end %>
54
+
55
+ <%= form.fields_for address_name do |address_form| %>
56
+ <div class="inner" data-hook=<%="#{address_type}_inner" %>>
57
+ <%= render :partial => 'spree/addresses/form', locals: {
58
+ address_name: address_name,
59
+ address_form: address_form,
60
+ address_type: address_type,
61
+ address: Spree::Address.default
62
+ } %>
63
+ </div>
64
+ <% end %>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <% end %>
69
+ </div>
70
+
71
+ <br />
72
+
73
+ <div class="form-buttons" data-hook="buttons">
74
+ <%= submit_tag t('spree.save_and_continue'), class: 'continue button primary' %>
75
+ </div>
@@ -0,0 +1,36 @@
1
+ <div data-hook='account_my_addresses' class='account-my-addresses'>
2
+ <h3><%= t('spree.my_shipping_addresses') %></h3>
3
+
4
+ <% if try_spree_current_user.addresses.present? %>
5
+ <table id='user_addresses' data-hook='account_my_addresses_table'>
6
+ <thead>
7
+ <tr>
8
+ <th class="address-label"><%= t('spree.label') %></th>
9
+ <th class="address-info"><%= t('spree.address_information') %></th>
10
+ <th class="address-actions"></th>
11
+ </tr>
12
+ </thead>
13
+
14
+ <% try_spree_current_user.addresses.each do |address| %>
15
+ <tr class="<%= cycle('even', 'odd') %>">
16
+ <td><%= address.label %></td>
17
+ <td><%= address.to_s.gsub("<br/>", ", ") %></td>
18
+ <td class='actions'>
19
+ <%= link_to_with_icon 'edit', t('spree.actions.edit'), edit_address_path(address), no_text: true %>
20
+ <% if address.can_be_deleted? %>
21
+ <%= link_to_with_icon 'trash', '', address_path(address), method: :delete, class: 'delete', data: { confirm: t('spree.are_you_sure') }%>
22
+ <% end %>
23
+ </td>
24
+ </tr>
25
+ <% end %>
26
+ </table>
27
+ <% else %>
28
+ <div id='users-address-list-empty'>
29
+ <%= t('spree.no_shipping_addresses_on_file') %>
30
+ </div>
31
+ <% end %>
32
+
33
+ <div id='new_address_link'>
34
+ <%= link_to t('spree.add_new_shipping_address'), new_address_path, class: 'btn primary' %>
35
+ </div>
36
+ </div>
@@ -0,0 +1,15 @@
1
+ de:
2
+ address_book:
3
+ other_address: "Andere Adresse"
4
+ add_new_shipping_address: "Neue Versandadresse hinzufügen"
5
+ new_shipping_address: "Neue Versandadresse"
6
+ edit_shipping_address: "Versandadresse bearbeiten"
7
+ no_shipping_addresses_on_file: "Sie haben noch keine Versandadresse hinterlegt."
8
+ shipping_addresses: "Meine Versandadressen"
9
+ successfully_created: "Die Adresse wurde erfolgreich angelegt."
10
+ successfully_saved: "Die Adresse wurde erfolgreich gespeichert."
11
+ unsuccessfully_saved: "Es ist ein Fehler beim Speichern der Adresse aufgetreten."
12
+ successfully_updated: "Die Adresse wurde erfolgreich aktualisiert."
13
+ unsuccessfully_updated: "Es ist ein Fehler beim Aktualisieren der Adresse aufgetreten."
14
+ successfully_removed: "Die Adresse wurde erfolgreich entfernt."
15
+ save: "Speichern"
@@ -0,0 +1,28 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ spree:
6
+ address_index: "Address #%{number}"
7
+ back_to_my_account: Back to My Account
8
+ continue_checkout: Continue with Checkout
9
+ other_address: "Other address"
10
+ add_new_shipping_address: "Add new address"
11
+ label: Label
12
+ new_shipping_address: "New Address"
13
+ edit_shipping_address: "Edit Address"
14
+ my_shipping_addresses: "My Addresses"
15
+ no_shipping_addresses_on_file: "No addresses on file"
16
+ shipping_addresses: "Addresses"
17
+ successfully_created: "Address has been successfully created."
18
+ successfully_removed: "Address has been successfully removed."
19
+ successfully_saved: "Saved successfully"
20
+ unsuccessfully_saved: "There was an error while trying to save your address."
21
+ successfully_updated: "Updated successfully"
22
+ unsuccessfully_updated: "There was an update while trying to update your address."
23
+ unsuccessfully_removed: There was an error while trying to remove the address.
24
+ save: "Save"
25
+ save_address: Save address
26
+ placeholder:
27
+ address:
28
+ label: Home, Work, etc
@@ -0,0 +1,3 @@
1
+ pt-BR:
2
+ address_book:
3
+ other_address: "Outros endereços"
@@ -0,0 +1,13 @@
1
+ ru:
2
+ address_book:
3
+ other_address: "Другой адрес"
4
+ add_new_shipping_address: "Добавить новый адрес"
5
+ new_shipping_address: "Новый адрес"
6
+ edit_shipping_address: "Редактирование адреса"
7
+ no_shipping_addresses_on_file: "Вы пока не указали ни одного адреса"
8
+ shipping_addresses: "Адреса"
9
+ successfully_saved: "Успешно сохранен"
10
+ unsuccessfully_saved: "Возникла ошибка при попытке сохранить ваш адрес."
11
+ successfully_updated: "Успешно обновлён"
12
+ unsuccessfully_updated: "Возникла ошибка при попытке обновить ваш адрес."
13
+ save: "Сохранить"
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ Spree::Core::Engine.routes.draw do
4
+ resources :addresses
5
+
6
+ if Rails.env.test?
7
+ put '/cart', to: 'orders#update', as: :put_cart
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddUserIdAndDeletedAtToAddresses < SolidusSupport::Migration[4.2]
4
+ def self.up
5
+ add_column :spree_addresses, :deleted_at, :datetime
6
+ add_reference :spree_addresses, :user, index: true
7
+ end
8
+
9
+ def self.down
10
+ remove_column :spree_addresses, :deleted_at
11
+ remove_reference :spree_addresses, :user
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddLabelToAddresses < SolidusSupport::Migration[5.1]
4
+ def change
5
+ add_column :spree_addresses, :label, :string
6
+ end
7
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAddressBook
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ class_option :auto_run_migrations, type: :boolean, default: false
7
+
8
+ def add_javascripts
9
+ append_file "vendor/assets/javascripts/spree/frontend/all.js", "//= require spree/frontend/solidus_address_book\n"
10
+ end
11
+
12
+ def add_stylesheets
13
+ inject_into_file "vendor/assets/stylesheets/spree/frontend/all.css", " *= require spree/frontend/solidus_address_book\n", before: /\*\//, verbose: true
14
+ end
15
+
16
+ def add_migrations
17
+ run 'bundle exec rake railties:install:migrations FROM=solidus_address_book'
18
+ end
19
+
20
+ def run_migrations
21
+ res = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask("Would you like to run the migrations now? [Y/n]"))
22
+ if res
23
+ run 'bundle exec rake db:migrate'
24
+ else
25
+ puts "Skiping rake db:migrate, don't forget to run it!"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'solidus_core'
4
+ require 'solidus_support'
5
+ require 'deface'
6
+ require 'solidus_address_book/engine'
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAddressBook
4
+ class Configuration < Spree::Preferences::Configuration
5
+ preference :disable_bill_address, :boolean, default: false
6
+ preference :alternative_billing_phone, :boolean, default: false # Request extra phone for billing addr
7
+ end
8
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAddressBook
4
+ class Engine < Rails::Engine
5
+ isolate_namespace Spree
6
+ engine_name 'solidus_address_book'
7
+
8
+ config.autoload_paths += %W(#{config.root}/lib)
9
+
10
+ initializer "solidus_address_book.environment", before: :load_config_initializers do |app|
11
+ SolidusAddressBook::Config = SolidusAddressBook::Configuration.new
12
+ end
13
+
14
+ def self.activate
15
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
16
+ Rails.configuration.cache_classes ? require(c) : load(c)
17
+ end
18
+
19
+ Spree::Ability.register_ability(Spree::AddressAbility)
20
+ end
21
+
22
+ config.to_prepare(&method(:activate).to_proc)
23
+ end
24
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAddressBook
4
+ VERSION = '1.0.0'
5
+ end
metadata ADDED
@@ -0,0 +1,354 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_address_book
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan Tapia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-06-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: solidus
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: solidus_auth_devise
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '3'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '3'
53
+ - !ruby/object:Gem::Dependency
54
+ name: solidus_support
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ - !ruby/object:Gem::Dependency
68
+ name: deface
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.0'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: discard
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: capybara
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: capybara-screenshot
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: coffee-rails
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: database_cleaner
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: factory_bot
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: ffaker
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: poltergeist
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ - !ruby/object:Gem::Dependency
194
+ name: rspec-rails
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rubocop
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: rubocop-rspec
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ - !ruby/object:Gem::Dependency
236
+ name: sass-rails
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: simplecov
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ type: :development
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ - !ruby/object:Gem::Dependency
264
+ name: sqlite3
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ type: :development
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ - !ruby/object:Gem::Dependency
278
+ name: puma
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - ">="
282
+ - !ruby/object:Gem::Version
283
+ version: '0'
284
+ type: :development
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ description: Adds address book for users to Spree
292
+ email:
293
+ executables: []
294
+ extensions: []
295
+ extra_rdoc_files: []
296
+ files:
297
+ - LICENSE
298
+ - README.md
299
+ - Rakefile
300
+ - app/assets/javascripts/spree/frontend/solidus_address_book.js.erb
301
+ - app/assets/stylesheets/spree/frontend/solidus_address_book.scss
302
+ - app/controllers/spree/addresses_controller.rb
303
+ - app/controllers/spree/checkout_controller_decorator.rb
304
+ - app/helpers/spree/addresses_helper.rb
305
+ - app/models/concerns/solidus_address_book/address.rb
306
+ - app/models/concerns/solidus_address_book/permitted_attributes_concern.rb
307
+ - app/models/permitted_attributes_decorator.rb
308
+ - app/models/spree/address_ability.rb
309
+ - app/models/spree/address_decorator.rb
310
+ - app/models/spree/order_decorator.rb
311
+ - app/models/spree/user_decorator.rb
312
+ - app/overrides/add_address_book_to_my_account.rb
313
+ - app/views/spree/addresses/_form.html.erb
314
+ - app/views/spree/addresses/destroy.js.erb
315
+ - app/views/spree/addresses/edit.html.erb
316
+ - app/views/spree/addresses/new.html.erb
317
+ - app/views/spree/checkout/_address.html.erb
318
+ - app/views/spree/users/_addresses.html.erb
319
+ - config/locales/de.yml
320
+ - config/locales/en.yml
321
+ - config/locales/pt-BR.yml
322
+ - config/locales/ru.yml
323
+ - config/routes.rb
324
+ - db/migrate/20110302102208_add_user_id_and_deleted_at_to_addresses.rb
325
+ - db/migrate/20190619191704_add_label_to_addresses.rb
326
+ - lib/generators/solidus_address_book/install_generator.rb
327
+ - lib/solidus_address_book.rb
328
+ - lib/solidus_address_book/configuration.rb
329
+ - lib/solidus_address_book/engine.rb
330
+ - lib/solidus_address_book/version.rb
331
+ homepage: http://github.com/jtapia/solidus_address_book
332
+ licenses: []
333
+ metadata: {}
334
+ post_install_message:
335
+ rdoc_options: []
336
+ require_paths:
337
+ - lib
338
+ required_ruby_version: !ruby/object:Gem::Requirement
339
+ requirements:
340
+ - - ">="
341
+ - !ruby/object:Gem::Version
342
+ version: '2.2'
343
+ required_rubygems_version: !ruby/object:Gem::Requirement
344
+ requirements:
345
+ - - ">="
346
+ - !ruby/object:Gem::Version
347
+ version: '0'
348
+ requirements: []
349
+ rubyforge_project:
350
+ rubygems_version: 2.7.6
351
+ signing_key:
352
+ specification_version: 4
353
+ summary: Adds address book for users to Spree
354
+ test_files: []