spree_group_buy 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []