spree_group_buy 0.0.1

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 (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +24 -0
  5. data/.travis.yml +49 -0
  6. data/Appraisals +20 -0
  7. data/Gemfile +11 -0
  8. data/LICENSE +26 -0
  9. data/README.md +51 -0
  10. data/Rakefile +21 -0
  11. data/app/.gitkeep +0 -0
  12. data/app/controllers/.gitkeep +0 -0
  13. data/app/controllers/spree/admin/group_buys_controller.rb +15 -0
  14. data/app/controllers/spree/admin/orders_controller_decorator.rb +17 -0
  15. data/app/controllers/spree/api/v2/storefront/cart_controller_decorator.rb +9 -0
  16. data/app/controllers/spree/products_controller_decorator.rb +20 -0
  17. data/app/mailers/spree/order_mailer_decorator.rb +10 -0
  18. data/app/models/.gitkeep +0 -0
  19. data/app/models/spree/group_buy.rb +72 -0
  20. data/app/models/spree/line_item_decorator.rb +18 -0
  21. data/app/models/spree/order_decorator.rb +68 -0
  22. data/app/models/spree/product_decorator.rb +8 -0
  23. data/app/models/spree/stock/packer_decorator.rb +27 -0
  24. data/app/models/spree/stock/prioritizer_decorator.rb +18 -0
  25. data/app/services/.gitkeep +0 -0
  26. data/app/services/spree/cart/group_buy_add_item.rb +66 -0
  27. data/app/views/.gitkeep +0 -0
  28. data/app/views/spree/admin/group_buys/_form.html.erb +32 -0
  29. data/app/views/spree/admin/group_buys/edit.html.erb +13 -0
  30. data/app/views/spree/admin/group_buys/index.html.erb +49 -0
  31. data/app/views/spree/admin/group_buys/new.html.erb +15 -0
  32. data/app/views/spree/admin/orders/index.html.erb +271 -0
  33. data/app/views/spree/admin/shared/_main_menu.html.erb +49 -0
  34. data/app/views/spree/admin/shared/_product_tabs.html.erb +56 -0
  35. data/bin/rails +8 -0
  36. data/config/locales/en.yml +5 -0
  37. data/config/routes.rb +8 -0
  38. data/db/migrate/20200824192531_create_spree_group_buys.rb +15 -0
  39. data/db/migrate/20200826140754_add_group_buy_to_line_items.rb +5 -0
  40. data/db/migrate/20201005210530_add_group_buy_to_orders.rb +5 -0
  41. data/gemfiles/spree_3_7.gemfile +9 -0
  42. data/gemfiles/spree_4_0.gemfile +8 -0
  43. data/gemfiles/spree_4_1.gemfile +9 -0
  44. data/gemfiles/spree_master.gemfile +8 -0
  45. data/lib/generators/spree_group_buy/install/install_generator.rb +26 -0
  46. data/lib/generators/templates/vendor/assets/javascripts/spree/frontend/views/spree/products/cart_form.js +388 -0
  47. data/lib/generators/templates/vendor/assets/javascripts/spree/frontend/views/spree/shared/product_added_modal.js +28 -0
  48. data/lib/spree_group_buy.rb +4 -0
  49. data/lib/spree_group_buy/engine.rb +20 -0
  50. data/lib/spree_group_buy/factories.rb +6 -0
  51. data/lib/spree_group_buy/version.rb +17 -0
  52. data/spree_group_buy.gemspec +32 -0
  53. metadata +197 -0
@@ -0,0 +1,28 @@
1
+ Spree.showProductAddedModal = function(product, variant, group_buy_display_price) {
2
+ var modalSelector = '.product-added-modal'
3
+ var nameSelector = '.product-added-modal-product-details-name'
4
+ var priceSelector = '.product-added-modal-product-details-price'
5
+ var imageSelector = '.product-added-modal-product-image-container-image'
6
+ var modalNoImageClass = 'product-added-modal--no-image'
7
+
8
+ var price = group_buy_display_price ? "<span style='text-decoration: line-through; padding-right: 10px;'>" + variant.display_price + "</span>" + group_buy_display_price : variant.display_price
9
+ var images = variant && variant.images.length > 0 ? variant.images : product.images
10
+ var name = product.name
11
+ var leadImage = images.length === 0 ? null : images[0]
12
+ var $modal = $(modalSelector)
13
+
14
+ $modal.find(nameSelector).text(name)
15
+ $modal.find(priceSelector).html(price)
16
+
17
+ if (leadImage !== null) {
18
+ $modal
19
+ .removeClass(modalNoImageClass)
20
+ .find(imageSelector)
21
+ .attr('src', leadImage.url_product)
22
+ .attr('alt', leadImage.alt || name)
23
+ } else {
24
+ $modal.addClass(modalNoImageClass)
25
+ }
26
+
27
+ $modal.modal()
28
+ }
@@ -0,0 +1,4 @@
1
+ require 'spree_core'
2
+ require 'spree_extension'
3
+ require 'spree_group_buy/engine'
4
+ require 'spree_group_buy/version'
@@ -0,0 +1,20 @@
1
+ module SpreeGroupBuy
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_group_buy'
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ def self.activate
13
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
14
+ Rails.configuration.cache_classes ? require(c) : load(c)
15
+ end
16
+ end
17
+
18
+ config.to_prepare(&method(:activate).to_proc)
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
3
+ #
4
+ # Example adding this to your spec_helper will load these Factories for use:
5
+ # require 'spree_group_buy/factories'
6
+ end
@@ -0,0 +1,17 @@
1
+ module SpreeGroupBuy
2
+ module_function
3
+
4
+ # Returns the version of the currently loaded SpreeGroupBuy as a
5
+ # <tt>Gem::Version</tt>.
6
+ def version
7
+ Gem::Version.new VERSION::STRING
8
+ end
9
+
10
+ module VERSION
11
+ MAJOR = 0
12
+ MINOR = 0
13
+ TINY = 1
14
+
15
+ STRING = [MAJOR, MINOR, TINY].compact.join('.')
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: UTF-8
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'spree_group_buy/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.platform = Gem::Platform::RUBY
9
+ s.name = 'spree_group_buy'
10
+ s.version = SpreeGroupBuy.version
11
+ s.summary = 'Spree group buy extension'
12
+ s.description = 'Spree group buy extension'
13
+ s.required_ruby_version = '>= 2.3.3'
14
+
15
+ s.author = 'Everymarket'
16
+ s.email = 'josh@everymarket.com'
17
+ s.homepage = 'https://github.com/joshyan/spree_group_buy'
18
+ s.license = 'BSD-3-Clause'
19
+
20
+ s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
21
+ s.require_path = 'lib'
22
+ s.requirements << 'none'
23
+
24
+ spree_version = '>= 3.2.0', '< 5.0'
25
+ s.add_dependency 'spree_core', spree_version
26
+ s.add_dependency 'spree_api', spree_version
27
+ s.add_dependency 'spree_backend', spree_version
28
+ s.add_dependency 'spree_extension'
29
+ s.add_dependency 'deface', '~> 1.0'
30
+
31
+ s.add_development_dependency 'spree_dev_tools'
32
+ end
metadata ADDED
@@ -0,0 +1,197 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_group_buy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Everymarket
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-11-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: spree_api
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.2.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '5.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 3.2.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '5.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: spree_backend
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 3.2.0
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '5.0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 3.2.0
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '5.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: spree_extension
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: deface
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '1.0'
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '1.0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: spree_dev_tools
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ description: Spree group buy extension
116
+ email: josh@everymarket.com
117
+ executables: []
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - ".gitignore"
122
+ - ".rspec"
123
+ - ".rubocop.yml"
124
+ - ".travis.yml"
125
+ - Appraisals
126
+ - Gemfile
127
+ - LICENSE
128
+ - README.md
129
+ - Rakefile
130
+ - app/.gitkeep
131
+ - app/controllers/.gitkeep
132
+ - app/controllers/spree/admin/group_buys_controller.rb
133
+ - app/controllers/spree/admin/orders_controller_decorator.rb
134
+ - app/controllers/spree/api/v2/storefront/cart_controller_decorator.rb
135
+ - app/controllers/spree/products_controller_decorator.rb
136
+ - app/mailers/spree/order_mailer_decorator.rb
137
+ - app/models/.gitkeep
138
+ - app/models/spree/group_buy.rb
139
+ - app/models/spree/line_item_decorator.rb
140
+ - app/models/spree/order_decorator.rb
141
+ - app/models/spree/product_decorator.rb
142
+ - app/models/spree/stock/packer_decorator.rb
143
+ - app/models/spree/stock/prioritizer_decorator.rb
144
+ - app/services/.gitkeep
145
+ - app/services/spree/cart/group_buy_add_item.rb
146
+ - app/views/.gitkeep
147
+ - app/views/spree/admin/group_buys/_form.html.erb
148
+ - app/views/spree/admin/group_buys/edit.html.erb
149
+ - app/views/spree/admin/group_buys/index.html.erb
150
+ - app/views/spree/admin/group_buys/new.html.erb
151
+ - app/views/spree/admin/orders/index.html.erb
152
+ - app/views/spree/admin/shared/_main_menu.html.erb
153
+ - app/views/spree/admin/shared/_product_tabs.html.erb
154
+ - bin/rails
155
+ - config/locales/en.yml
156
+ - config/routes.rb
157
+ - db/migrate/20200824192531_create_spree_group_buys.rb
158
+ - db/migrate/20200826140754_add_group_buy_to_line_items.rb
159
+ - db/migrate/20201005210530_add_group_buy_to_orders.rb
160
+ - gemfiles/spree_3_7.gemfile
161
+ - gemfiles/spree_4_0.gemfile
162
+ - gemfiles/spree_4_1.gemfile
163
+ - gemfiles/spree_master.gemfile
164
+ - lib/generators/spree_group_buy/install/install_generator.rb
165
+ - lib/generators/templates/vendor/assets/javascripts/spree/frontend/views/spree/products/cart_form.js
166
+ - lib/generators/templates/vendor/assets/javascripts/spree/frontend/views/spree/shared/product_added_modal.js
167
+ - lib/spree_group_buy.rb
168
+ - lib/spree_group_buy/engine.rb
169
+ - lib/spree_group_buy/factories.rb
170
+ - lib/spree_group_buy/version.rb
171
+ - spree_group_buy.gemspec
172
+ homepage: https://github.com/joshyan/spree_group_buy
173
+ licenses:
174
+ - BSD-3-Clause
175
+ metadata: {}
176
+ post_install_message:
177
+ rdoc_options: []
178
+ require_paths:
179
+ - lib
180
+ required_ruby_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: 2.3.3
185
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ requirements:
191
+ - none
192
+ rubyforge_project:
193
+ rubygems_version: 2.7.6
194
+ signing_key:
195
+ specification_version: 4
196
+ summary: Spree group buy extension
197
+ test_files: []