solidus_multi_domain 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +33 -0
  3. data/.rspec +4 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +9 -0
  6. data/README.md +72 -0
  7. data/Rakefile +21 -0
  8. data/app/controllers/concerns/spree_multi_domain/create_line_item_support.rb +16 -0
  9. data/app/controllers/concerns/spree_multi_domain/show_product_support.rb +17 -0
  10. data/app/controllers/spree/admin/products_controller_decorator.rb +12 -0
  11. data/app/controllers/spree/admin/stores_controller.rb +24 -0
  12. data/app/controllers/spree/api/line_items_controller_decorator.rb +1 -0
  13. data/app/controllers/spree/api/orders_controller_decorator.rb +21 -0
  14. data/app/controllers/spree/api/products_controller_decorator.rb +1 -0
  15. data/app/controllers/spree/api/shipments_controller_decorator.rb +17 -0
  16. data/app/controllers/spree/home_controller_decorator.rb +7 -0
  17. data/app/controllers/spree/products_controller_decorator.rb +1 -0
  18. data/app/controllers/spree/taxons_controller_decorator.rb +10 -0
  19. data/app/helpers/spree/products_helper_decorator.rb +11 -0
  20. data/app/mailers/spree/carton_mailer_decorator.rb +13 -0
  21. data/app/mailers/spree/order_mailer.rb +35 -0
  22. data/app/models/spree/order_decorator.rb +8 -0
  23. data/app/models/spree/payment_method_decorator.rb +13 -0
  24. data/app/models/spree/product_decorator.rb +4 -0
  25. data/app/models/spree/promotion/rules/store.rb +30 -0
  26. data/app/models/spree/shipping_method_decorator.rb +18 -0
  27. data/app/models/spree/store_decorator.rb +25 -0
  28. data/app/models/spree/store_payment_method.rb +6 -0
  29. data/app/models/spree/store_shipping_method.rb +6 -0
  30. data/app/models/spree/taxon_decorator.rb +5 -0
  31. data/app/models/spree/taxonomy_decorator.rb +3 -0
  32. data/app/models/spree/tracker_decorator.rb +7 -0
  33. data/app/models/spree_multi_domain/line_item_decorator.rb +20 -0
  34. data/app/overrides/decorate_admin_configurations_index.rb +5 -0
  35. data/app/overrides/decorate_admin_products_form.rb +6 -0
  36. data/app/overrides/decorate_admin_products_index.rb +20 -0
  37. data/app/overrides/decorate_admin_trackers_form.rb +6 -0
  38. data/app/overrides/decorate_admin_trackers_index.rb +13 -0
  39. data/app/views/spree/admin/products/_index_headers.html.erb +1 -0
  40. data/app/views/spree/admin/products/_index_rows.html.erb +1 -0
  41. data/app/views/spree/admin/products/_index_search_fields.html.erb +4 -0
  42. data/app/views/spree/admin/products/_stores.html.erb +8 -0
  43. data/app/views/spree/admin/promotions/rules/_store.html.erb +8 -0
  44. data/app/views/spree/admin/stores/_form.html.erb +90 -0
  45. data/app/views/spree/admin/stores/edit.html.erb +29 -0
  46. data/app/views/spree/admin/stores/index.html.erb +43 -0
  47. data/app/views/spree/admin/stores/new.html.erb +29 -0
  48. data/app/views/spree/admin/taxonomies/_form.html.erb +12 -0
  49. data/app/views/spree/admin/trackers/_index_rows.html.erb +1 -0
  50. data/app/views/spree/admin/trackers/_store.html.erb +6 -0
  51. data/app/views/spree/shared/_google_analytics.html.erb +39 -0
  52. data/bin/rails +7 -0
  53. data/circle.yml +6 -0
  54. data/config/locales/en.yml +26 -0
  55. data/config/locales/fr.yml +9 -0
  56. data/config/locales/pl.yml +10 -0
  57. data/config/locales/ru.yml +9 -0
  58. data/config/routes.rb +5 -0
  59. data/db/migrate/20091202123245_add_order_store.rb +17 -0
  60. data/db/migrate/20100114020535_add_store_to_tracker.rb +25 -0
  61. data/db/migrate/20100227180338_create_products_stores.rb +13 -0
  62. data/db/migrate/20100616204303_store_id_for_taxonomies.rb +19 -0
  63. data/db/migrate/20110601125650_remove_datetime_columns_from_products_stores.rb +13 -0
  64. data/db/migrate/20110601145424_add_indexes_to_products_stores.rb +11 -0
  65. data/db/migrate/20120223183401_namespace.rb +9 -0
  66. data/db/migrate/20121210224018_add_store_payment_methods.rb +10 -0
  67. data/db/migrate/20130308084714_add_logo_to_stores.rb +13 -0
  68. data/db/migrate/20130325231147_add_store_shipping_methods.rb +14 -0
  69. data/db/migrate/20130412212659_add_spree_promotion_rules_stores.rb +8 -0
  70. data/db/migrate/20150304200122_add_indexes.rb +6 -0
  71. data/lib/assets/javascripts/spree/backend/solidus_multi_domain.js +1 -0
  72. data/lib/assets/javascripts/spree/backend/store_picker.js +34 -0
  73. data/lib/assets/javascripts/spree/frontend/solidus_multi_domain.js +0 -0
  74. data/lib/assets/stylesheets/spree/frontend/solidus_multi_domain.css +5 -0
  75. data/lib/generators/spree_multi_domain/install/install_generator.rb +24 -0
  76. data/lib/solidus_multi_domain.rb +3 -0
  77. data/lib/spree/controller_helpers/order_decorator.rb +11 -0
  78. data/lib/spree/search/multi_domain.rb +19 -0
  79. data/lib/spree_multi_domain/engine.rb +65 -0
  80. data/lib/spree_multi_domain/multi_domain_helpers.rb +31 -0
  81. data/solidus_multi_domain.gemspec +31 -0
  82. data/spec/controllers/spree/admin/products_controller_spec.rb +39 -0
  83. data/spec/controllers/spree/admin/stores_controller_spec.rb +12 -0
  84. data/spec/controllers/spree/api/line_items_controller_spec.rb +35 -0
  85. data/spec/controllers/spree/api/orders_controller_spec.rb +44 -0
  86. data/spec/controllers/spree/api/products_controller_spec.rb +52 -0
  87. data/spec/controllers/spree/api/shipments_controller_spec.rb +63 -0
  88. data/spec/controllers/spree/products_controller_spec.rb +49 -0
  89. data/spec/helpers/products_helper_decorator_spec.rb +22 -0
  90. data/spec/mailers/carton_mailer_spec.rb +41 -0
  91. data/spec/models/spree/line_item_spec.rb +39 -0
  92. data/spec/models/spree/order_spec.rb +18 -0
  93. data/spec/models/spree/payment_method_spec.rb +33 -0
  94. data/spec/models/spree/product_spec.rb +18 -0
  95. data/spec/models/spree/shipping_method_decorator_spec.rb +27 -0
  96. data/spec/models/spree/store_spec.rb +42 -0
  97. data/spec/models/spree/taxon_decorator_spec.rb +30 -0
  98. data/spec/models/spree/tracker_spec.rb +19 -0
  99. data/spec/requests/global_controller_helpers_spec.rb +65 -0
  100. data/spec/requests/template_renderer_spec.rb +25 -0
  101. data/spec/spec_helper.rb +33 -0
  102. data/spec/support/factory_overrides.rb +10 -0
  103. metadata +278 -0
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'PaymentMethod' do
4
+ describe '.available' do
5
+ subject { Spree::PaymentMethod.available(:front_end, store) }
6
+
7
+ let!(:check_payment_method) { FactoryGirl.create :check_payment_method }
8
+ let(:payment_method_store) { FactoryGirl.create :store, :payment_methods => [check_payment_method] }
9
+
10
+ context "when store is not specified" do
11
+ let(:store) { nil }
12
+
13
+ it { is_expected.to include(check_payment_method) }
14
+ end
15
+
16
+ context "when store is specified" do
17
+ let(:store) { payment_method_store }
18
+
19
+ context "when store has payment methods" do
20
+ let(:non_matching_check_payment_method) { FactoryGirl.create :check_payment_method }
21
+
22
+ it { is_expected.to include(check_payment_method) }
23
+ it { is_expected.not_to include(non_matching_check_payment_method) }
24
+ end
25
+
26
+ context "when store does not have payment_methods" do
27
+ let(:payment_method_store) { FactoryGirl.create :store }
28
+
29
+ it { is_expected.to include(check_payment_method) }
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Product do
4
+
5
+ before(:each) do
6
+ @store = FactoryGirl.create(:store)
7
+ @product = FactoryGirl.create(:product, :stores => [@store])
8
+
9
+ @product2 = FactoryGirl.create(:product, :slug => 'something else')
10
+ end
11
+
12
+ it 'should correctly find products by store' do
13
+ products_by_store = Spree::Product.by_store(@store)
14
+
15
+ expect(products_by_store).to include(@product)
16
+ expect(products_by_store).to_not include(@product2)
17
+ end
18
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::ShippingMethod do
4
+ let(:shipping_method) { create :shipping_method }
5
+ let(:order) { create :order, :store => store }
6
+ let(:store) { create :store }
7
+
8
+ describe '.store_match?' do
9
+ subject { shipping_method.store_match?(order) }
10
+
11
+ context 'when store contains this shipping method' do
12
+ before { store.shipping_methods << shipping_method }
13
+ it { is_expected.to eq(true) }
14
+ end
15
+
16
+ context "when the store does not contain this shipping method" do
17
+ context "when the store has no shipping methods" do
18
+ it { is_expected.to eq(true) }
19
+ end
20
+
21
+ context "when the store has at least on shipping method" do
22
+ before { store.shipping_methods << FactoryGirl.create(:shipping_method) }
23
+ it { is_expected.to eq(false)}
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Store do
4
+ let!(:default_store) { FactoryGirl.create(:store, default: true, url: "default.com") }
5
+ let!(:store_2) { FactoryGirl.create(:store, code: 'STORE2', url: 'freethewhales.com') }
6
+ let!(:store_3) { FactoryGirl.create(:store, code: 'STORE3', url: "website1.com\nwww.subdomain.com") }
7
+
8
+ it "should find stores by url" do
9
+ by_url = Spree::Store.by_url('www.subdomain.com')
10
+
11
+ expect(by_url).to include(store_3)
12
+ expect(by_url).not_to include(default_store)
13
+ expect(by_url).not_to include(store_2)
14
+ end
15
+
16
+ it "should find the current store by url" do
17
+ current_store = Spree::Store.current('website1.com')
18
+
19
+ expect(current_store) == store_3
20
+ end
21
+
22
+ it "should find the current store by code" do
23
+ current_store = Spree::Store.current('STORE2')
24
+
25
+ expect(current_store) == store_2
26
+ end
27
+
28
+ describe "default" do
29
+ it "should ensure there is a default if one doesn't exist yet" do
30
+ expect(default_store.default).to be_truthy
31
+ end
32
+
33
+ it "should ensure there is only one default" do
34
+ [default_store, store_2, store_3].each(&:reload)
35
+
36
+ expect(Spree::Store.default).to eq default_store
37
+ expect(default_store.default).to be_truthy
38
+ expect(store_2.default).to be_falsey
39
+ expect(store_3.default).to be_falsey
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Taxon do
4
+ describe ".find_by_store_id_and_permalink!" do
5
+ context "taxon exist in given store" do
6
+
7
+ let!(:store) { FactoryGirl.create :store }
8
+ let!(:taxonomy) { FactoryGirl.create :taxonomy , store: store}
9
+ let!(:taxon) { FactoryGirl.create :taxon , taxonomy: taxonomy}
10
+
11
+ let!(:anotherstore) { FactoryGirl.create :store, name: "second-test-store" }
12
+ let!(:anothertaxonomy) { FactoryGirl.create :taxonomy , store: anotherstore}
13
+ let!(:anothertaxon) { FactoryGirl.create :taxon , taxonomy: anothertaxonomy}
14
+
15
+ it "returns a taxon" do
16
+ found_taxon = Spree::Taxon.find_by_store_id_and_permalink!(store.id, taxon.permalink)
17
+ expect(found_taxon).to eq taxon
18
+ expect(found_taxon).to_not eq anothertaxon
19
+ end
20
+ end
21
+
22
+ context "taxon does not exist in given store" do
23
+ it "raise active_record::not_found" do
24
+ expect{
25
+ Spree::Taxon.find_by_store_id_and_permalink!(1, "non-existing-permalink")
26
+ }.to raise_error(ActiveRecord::RecordNotFound)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Tracker do
4
+ before(:each) do
5
+ store = FactoryGirl.create(:store, default: true)
6
+ @tracker = FactoryGirl.create(:tracker, store: store)
7
+
8
+ another_store = FactoryGirl.create(:store, code: 'STORE2', url: 'completely-different-store.com')
9
+ @tracker2 = FactoryGirl.create(:tracker, store: another_store)
10
+ end
11
+
12
+ it "pulls out the current tracker based on store code" do
13
+ expect(Spree::Tracker.current('STORE2')).to eq @tracker2
14
+ end
15
+
16
+ it "pulls out the current tracker" do
17
+ expect(Spree::Tracker.current('www.example.com')).to eq @tracker
18
+ end
19
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Global controller helpers" do
4
+
5
+ let!(:store) { FactoryGirl.create :store }
6
+
7
+ before(:each) do
8
+ @tracker = FactoryGirl.create :tracker, :store => store
9
+ get '/'
10
+ end
11
+
12
+ it "should include the right tracker" do
13
+ expect(response.body).to include(@tracker.analytics_id)
14
+ end
15
+
16
+ it "should create a store-aware order" do
17
+ expect(controller.current_store).to eq(store)
18
+ end
19
+
20
+ it "should instantiate the correct store-bound tracker" do
21
+ expect(controller.current_tracker).to eq(@tracker)
22
+ end
23
+
24
+ describe '.current_currency' do
25
+ subject { controller.current_currency }
26
+
27
+ context "when store default_currency is nil" do
28
+ it { is_expected.to eq('USD') }
29
+ end
30
+
31
+ context "when the current store default_currency empty" do
32
+ let!(:store) { FactoryGirl.create :store, :default_currency => '' }
33
+
34
+ it { is_expected.to eq('USD') }
35
+ end
36
+
37
+ context "when the current store default_currency is a currency" do
38
+ let!(:store) { FactoryGirl.create :store, :default_currency => 'EUR' }
39
+ it { is_expected.to eq('EUR') }
40
+ end
41
+
42
+ context "when session[:currency] set by spree_multi_currency" do
43
+
44
+ before do
45
+ session[:currency] = 'AUD'
46
+ end
47
+
48
+ let!(:aud) { ::Money::Currency.find('AUD') }
49
+ let!(:eur) { ::Money::Currency.find('EUR') }
50
+ let!(:usd) { ::Money::Currency.find('USD') }
51
+ let!(:store) { FactoryGirl.create :store, :default_currency => 'EUR' }
52
+
53
+ it 'returns supported currencies' do
54
+ allow(controller).to receive(:supported_currencies).and_return([aud, eur, usd])
55
+ expect(controller.current_currency).to eql('AUD')
56
+ end
57
+
58
+ it 'returns store currency if not supported' do
59
+ allow(controller).to receive(:supported_currencies).and_return([eur, usd])
60
+ expect(controller.current_currency).to eql('EUR')
61
+ end
62
+ end
63
+ end
64
+
65
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Template renderer with dynamic layouts" do
4
+ before(:each) do
5
+ ApplicationController.view_paths = [ActionView::FixtureResolver.new(
6
+ "spree/layouts/spree_application.html.erb" => "Default layout <%= yield %>",
7
+ "spree/layouts/my_store/spree_application.html.erb" => "Store layout <%= yield %>",
8
+ "application/index.html.erb" => "hello"
9
+ )]
10
+ end
11
+
12
+ it "should render the layout corresponding to the current store" do
13
+ FactoryGirl.create :store, code: "my_store"
14
+
15
+ get "http://www.example.com"
16
+ expect(response.body).to eql("Store layout hello")
17
+ end
18
+
19
+ it "should fall back to the default layout if none are found for the current store" do
20
+ allow(ApplicationController).to receive(:current_store).and_return(nil)
21
+
22
+ get "http://www.example.com"
23
+ expect(response.body).to eql("Default layout hello")
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ require 'simplecov'
2
+ SimpleCov.start 'rails'
3
+
4
+ ENV['RAILS_ENV'] ||= 'test'
5
+
6
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
7
+
8
+ require 'rspec/rails'
9
+ require 'ffaker'
10
+
11
+ # Requires factories defined in spree_core
12
+ require 'spree/testing_support/factories'
13
+ require 'spree/testing_support/controller_requests'
14
+ require 'spree/testing_support/authorization_helpers'
15
+ require 'spree/testing_support/preferences'
16
+
17
+ require 'spree/api/testing_support/helpers'
18
+ require 'spree/api/testing_support/setup'
19
+
20
+ Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each { |f| require f }
21
+
22
+ RSpec.configure do |config|
23
+ config.infer_spec_type_from_file_location!
24
+ config.mock_with :rspec
25
+
26
+ config.filter_run focus: true
27
+ config.run_all_when_everything_filtered = true
28
+ config.use_transactional_fixtures = true
29
+
30
+ config.include FactoryGirl::Syntax::Methods
31
+ config.include Spree::TestingSupport::ControllerRequests, type: :controller
32
+ config.include Spree::Api::TestingSupport::Helpers, type: :controller
33
+ end
@@ -0,0 +1,10 @@
1
+ FactoryGirl.modify do
2
+ # Products need to belong to the same store as the order.
3
+ factory :line_item do
4
+ before(:create) do |line_item, evaluator|
5
+ if line_item.order.store
6
+ line_item.product.stores << line_item.order.store
7
+ end
8
+ end
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,278 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_multi_domain
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Solidus Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-09 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: 1.0.0.pre
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0.pre
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2'
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec-rails
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.2'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.2'
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: sqlite3
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sass-rails
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 4.0.2
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 4.0.2
89
+ - !ruby/object:Gem::Dependency
90
+ name: coffee-rails
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 4.0.0
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 4.0.0
103
+ - !ruby/object:Gem::Dependency
104
+ name: factory_girl
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 4.5.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 4.5.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: capybara
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.4'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '2.4'
131
+ - !ruby/object:Gem::Dependency
132
+ name: ffaker
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ description: Multiple Solidus stores on different domains - single unified backed
146
+ for processing orders.
147
+ email: contact@solidus.io
148
+ executables: []
149
+ extensions: []
150
+ extra_rdoc_files: []
151
+ files:
152
+ - ".gitignore"
153
+ - ".rspec"
154
+ - ".ruby-version"
155
+ - Gemfile
156
+ - README.md
157
+ - Rakefile
158
+ - app/controllers/concerns/spree_multi_domain/create_line_item_support.rb
159
+ - app/controllers/concerns/spree_multi_domain/show_product_support.rb
160
+ - app/controllers/spree/admin/products_controller_decorator.rb
161
+ - app/controllers/spree/admin/stores_controller.rb
162
+ - app/controllers/spree/api/line_items_controller_decorator.rb
163
+ - app/controllers/spree/api/orders_controller_decorator.rb
164
+ - app/controllers/spree/api/products_controller_decorator.rb
165
+ - app/controllers/spree/api/shipments_controller_decorator.rb
166
+ - app/controllers/spree/home_controller_decorator.rb
167
+ - app/controllers/spree/products_controller_decorator.rb
168
+ - app/controllers/spree/taxons_controller_decorator.rb
169
+ - app/helpers/spree/products_helper_decorator.rb
170
+ - app/mailers/spree/carton_mailer_decorator.rb
171
+ - app/mailers/spree/order_mailer.rb
172
+ - app/models/spree/order_decorator.rb
173
+ - app/models/spree/payment_method_decorator.rb
174
+ - app/models/spree/product_decorator.rb
175
+ - app/models/spree/promotion/rules/store.rb
176
+ - app/models/spree/shipping_method_decorator.rb
177
+ - app/models/spree/store_decorator.rb
178
+ - app/models/spree/store_payment_method.rb
179
+ - app/models/spree/store_shipping_method.rb
180
+ - app/models/spree/taxon_decorator.rb
181
+ - app/models/spree/taxonomy_decorator.rb
182
+ - app/models/spree/tracker_decorator.rb
183
+ - app/models/spree_multi_domain/line_item_decorator.rb
184
+ - app/overrides/decorate_admin_configurations_index.rb
185
+ - app/overrides/decorate_admin_products_form.rb
186
+ - app/overrides/decorate_admin_products_index.rb
187
+ - app/overrides/decorate_admin_trackers_form.rb
188
+ - app/overrides/decorate_admin_trackers_index.rb
189
+ - app/views/spree/admin/products/_index_headers.html.erb
190
+ - app/views/spree/admin/products/_index_rows.html.erb
191
+ - app/views/spree/admin/products/_index_search_fields.html.erb
192
+ - app/views/spree/admin/products/_stores.html.erb
193
+ - app/views/spree/admin/promotions/rules/_store.html.erb
194
+ - app/views/spree/admin/stores/_form.html.erb
195
+ - app/views/spree/admin/stores/edit.html.erb
196
+ - app/views/spree/admin/stores/index.html.erb
197
+ - app/views/spree/admin/stores/new.html.erb
198
+ - app/views/spree/admin/taxonomies/_form.html.erb
199
+ - app/views/spree/admin/trackers/_index_rows.html.erb
200
+ - app/views/spree/admin/trackers/_store.html.erb
201
+ - app/views/spree/shared/_google_analytics.html.erb
202
+ - bin/rails
203
+ - circle.yml
204
+ - config/locales/en.yml
205
+ - config/locales/fr.yml
206
+ - config/locales/pl.yml
207
+ - config/locales/ru.yml
208
+ - config/routes.rb
209
+ - db/migrate/20091202123245_add_order_store.rb
210
+ - db/migrate/20100114020535_add_store_to_tracker.rb
211
+ - db/migrate/20100227180338_create_products_stores.rb
212
+ - db/migrate/20100616204303_store_id_for_taxonomies.rb
213
+ - db/migrate/20110601125650_remove_datetime_columns_from_products_stores.rb
214
+ - db/migrate/20110601145424_add_indexes_to_products_stores.rb
215
+ - db/migrate/20120223183401_namespace.rb
216
+ - db/migrate/20121210224018_add_store_payment_methods.rb
217
+ - db/migrate/20130308084714_add_logo_to_stores.rb
218
+ - db/migrate/20130325231147_add_store_shipping_methods.rb
219
+ - db/migrate/20130412212659_add_spree_promotion_rules_stores.rb
220
+ - db/migrate/20150304200122_add_indexes.rb
221
+ - lib/assets/javascripts/spree/backend/solidus_multi_domain.js
222
+ - lib/assets/javascripts/spree/backend/store_picker.js
223
+ - lib/assets/javascripts/spree/frontend/solidus_multi_domain.js
224
+ - lib/assets/stylesheets/spree/frontend/solidus_multi_domain.css
225
+ - lib/generators/spree_multi_domain/install/install_generator.rb
226
+ - lib/solidus_multi_domain.rb
227
+ - lib/spree/controller_helpers/order_decorator.rb
228
+ - lib/spree/search/multi_domain.rb
229
+ - lib/spree_multi_domain/engine.rb
230
+ - lib/spree_multi_domain/multi_domain_helpers.rb
231
+ - solidus_multi_domain.gemspec
232
+ - spec/controllers/spree/admin/products_controller_spec.rb
233
+ - spec/controllers/spree/admin/stores_controller_spec.rb
234
+ - spec/controllers/spree/api/line_items_controller_spec.rb
235
+ - spec/controllers/spree/api/orders_controller_spec.rb
236
+ - spec/controllers/spree/api/products_controller_spec.rb
237
+ - spec/controllers/spree/api/shipments_controller_spec.rb
238
+ - spec/controllers/spree/products_controller_spec.rb
239
+ - spec/helpers/products_helper_decorator_spec.rb
240
+ - spec/mailers/carton_mailer_spec.rb
241
+ - spec/models/spree/line_item_spec.rb
242
+ - spec/models/spree/order_spec.rb
243
+ - spec/models/spree/payment_method_spec.rb
244
+ - spec/models/spree/product_spec.rb
245
+ - spec/models/spree/shipping_method_decorator_spec.rb
246
+ - spec/models/spree/store_spec.rb
247
+ - spec/models/spree/taxon_decorator_spec.rb
248
+ - spec/models/spree/tracker_spec.rb
249
+ - spec/requests/global_controller_helpers_spec.rb
250
+ - spec/requests/template_renderer_spec.rb
251
+ - spec/spec_helper.rb
252
+ - spec/support/factory_overrides.rb
253
+ homepage: https://solidus.io
254
+ licenses:
255
+ - BSD-3
256
+ metadata: {}
257
+ post_install_message:
258
+ rdoc_options: []
259
+ require_paths:
260
+ - lib
261
+ required_ruby_version: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '2.1'
266
+ required_rubygems_version: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
271
+ requirements:
272
+ - none
273
+ rubyforge_project:
274
+ rubygems_version: 2.2.0
275
+ signing_key:
276
+ specification_version: 4
277
+ summary: Adds multiple site support to Solidus
278
+ test_files: []