enjoy_cms_catalog 0.2.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 (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +45 -0
  8. data/Rakefile +1 -0
  9. data/app/assets/javascripts/enjoy_cms_catalog/enjoy_cms_catalog.coffee +0 -0
  10. data/app/assets/stylesheets/enjoy_cms_catalog/enjoy_cms_catalog.sass +0 -0
  11. data/app/controllers/enjoy/catalog/item_categories_controller.rb +5 -0
  12. data/app/controllers/enjoy/catalog/items_controller.rb +5 -0
  13. data/app/models/concerns/enjoy/catalog/decorators/item.rb +5 -0
  14. data/app/models/concerns/enjoy/catalog/decorators/item_category.rb +5 -0
  15. data/app/models/concerns/enjoy/catalog/decorators/item_category_image.rb +5 -0
  16. data/app/models/concerns/enjoy/catalog/decorators/item_image.rb +5 -0
  17. data/app/models/enjoy/catalog/item.rb +11 -0
  18. data/app/models/enjoy/catalog/item_category.rb +9 -0
  19. data/app/models/enjoy/catalog/item_category_image.rb +9 -0
  20. data/app/models/enjoy/catalog/item_image.rb +9 -0
  21. data/app/views/enjoy/catalog/item_categories/index.html.slim +29 -0
  22. data/app/views/enjoy/catalog/item_categories/show.html.slim +84 -0
  23. data/app/views/enjoy/catalog/items/index.html.slim +28 -0
  24. data/app/views/enjoy/catalog/items/show.html.slim +32 -0
  25. data/bin/console +14 -0
  26. data/bin/setup +7 -0
  27. data/config/initializers/rails_admin.rb +8 -0
  28. data/config/routes.rb +18 -0
  29. data/enjoy_cms_catalog.gemspec +42 -0
  30. data/lib/enjoy/catalog/admin.rb +6 -0
  31. data/lib/enjoy/catalog/admin/item.rb +91 -0
  32. data/lib/enjoy/catalog/admin/item_category.rb +141 -0
  33. data/lib/enjoy/catalog/admin/item_category_image.rb +15 -0
  34. data/lib/enjoy/catalog/admin/item_image.rb +15 -0
  35. data/lib/enjoy/catalog/configuration.rb +46 -0
  36. data/lib/enjoy/catalog/controllers/item_categories.rb +76 -0
  37. data/lib/enjoy/catalog/controllers/items.rb +61 -0
  38. data/lib/enjoy/catalog/engine.rb +7 -0
  39. data/lib/enjoy/catalog/models/item.rb +40 -0
  40. data/lib/enjoy/catalog/models/item_category.rb +49 -0
  41. data/lib/enjoy/catalog/models/item_category_image.rb +23 -0
  42. data/lib/enjoy/catalog/models/item_image.rb +23 -0
  43. data/lib/enjoy/catalog/models/mongoid/item.rb +41 -0
  44. data/lib/enjoy/catalog/models/mongoid/item_category.rb +33 -0
  45. data/lib/enjoy/catalog/models/mongoid/item_category_image.rb +25 -0
  46. data/lib/enjoy/catalog/models/mongoid/item_image.rb +26 -0
  47. data/lib/enjoy/catalog/version.rb +5 -0
  48. data/lib/enjoy_cms_catalog.rb +59 -0
  49. data/release.sh +7 -0
  50. metadata +210 -0
@@ -0,0 +1,7 @@
1
+ module Enjoy
2
+ module Catalog
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Enjoy::Catalog
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,40 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Item
4
+ extend ActiveSupport::Concern
5
+ include Enjoy::Model
6
+ include Enjoy::Enableable
7
+ include Enjoy::Seoable
8
+ include Enjoy::SitemapDataField
9
+
10
+ include Enjoy::Catalog.orm_specific('Item')
11
+
12
+ include ManualSlug
13
+
14
+ included do
15
+ manual_slug :name
16
+
17
+ rails_admin(&Enjoy::Catalog::Admin::Item.config(rails_admin_add_fields) { |config|
18
+ rails_admin_add_config(config)
19
+ })
20
+ end
21
+
22
+ def clean_excerpt
23
+ Rails::Html::FullSanitizer.new.sanitize(self.excerpt.strip)
24
+ end
25
+
26
+ def clean_content
27
+ Rails::Html::FullSanitizer.new.sanitize(self.content.strip)
28
+ end
29
+
30
+ # module ClassMethods
31
+ # def rails_admin_add_fields
32
+ # {}
33
+ # end
34
+ #
35
+ # def rails_admin_add_config(config)
36
+ # end
37
+ # end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,49 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module ItemCategory
4
+ extend ActiveSupport::Concern
5
+ include Enjoy::Model
6
+ include Enjoy::Enableable
7
+ include Enjoy::Seoable
8
+ include Enjoy::SitemapDataField
9
+
10
+ include Enjoy::Catalog.orm_specific('ItemCategory')
11
+
12
+ include ManualSlug
13
+
14
+ included do
15
+ manual_slug :name
16
+ end
17
+
18
+ def clean_excerpt
19
+ Rails::Html::FullSanitizer.new.sanitize(self.excerpt.strip)
20
+ end
21
+
22
+ def clean_content
23
+ Rails::Html::FullSanitizer.new.sanitize(self.content.strip)
24
+ end
25
+
26
+ def item_class
27
+ Enjoy::Catalog::Item
28
+ end
29
+
30
+ def items
31
+ item_class.in(item_category_ids: self.id)
32
+ end
33
+
34
+ def all_items
35
+ item_class.any_in(item_category_ids: self.self_and_descendants.map(&:id))
36
+ end
37
+
38
+ # module ClassMethods
39
+ # def rails_admin_add_fields
40
+ # {}
41
+ # end
42
+ #
43
+ # def rails_admin_add_config(config)
44
+ # end
45
+ # end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,23 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module ItemCategoryImage
4
+ extend ActiveSupport::Concern
5
+ # include Enjoy::Model
6
+ # include Enjoy::Enableable
7
+
8
+ include Enjoy::Catalog.orm_specific('ItemCategoryImage')
9
+
10
+ included do
11
+ end
12
+
13
+ # module ClassMethods
14
+ # def rails_admin_add_fields
15
+ # {}
16
+ # end
17
+ #
18
+ # def rails_admin_add_config(config)
19
+ # end
20
+ # end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module ItemImage
4
+ extend ActiveSupport::Concern
5
+ # include Enjoy::Model
6
+ # include Enjoy::Enableable
7
+
8
+ include Enjoy::Catalog.orm_specific('ItemImage')
9
+
10
+ included do
11
+ end
12
+
13
+ # module ClassMethods
14
+ # def rails_admin_add_fields
15
+ # {}
16
+ # end
17
+ #
18
+ # def rails_admin_add_config(config)
19
+ # end
20
+ # end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,41 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Mongoid
4
+ module Item
5
+ extend ActiveSupport::Concern
6
+ include Enjoy::MongoidPaperclip
7
+
8
+ included do
9
+ # default_scope -> { unscoped.any_of( {_type: nil}, {type: ""}, {_type: "Enjoy::Catalog::Item"} ) }
10
+
11
+ field :name, type: String, localize: Enjoy.configuration.localize, default: ""
12
+
13
+ enjoy_cms_mongoid_attached_file(:image,
14
+ styles: lambda { |attachment| attachment.instance.image_styles },
15
+ content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] }
16
+ )
17
+
18
+ acts_as_nested_set
19
+ scope :sorted, -> { order_by([:lft, :asc]) }
20
+
21
+ field :excerpt, type: String, localize: Enjoy.configuration.localize, default: ""
22
+ field :content, type: String, localize: Enjoy.configuration.localize, default: ""
23
+
24
+ has_and_belongs_to_many :item_categories, class_name: "Enjoy::Catalog::ItemCategory", inverse_of: nil
25
+
26
+ embeds_many :item_images, cascade_callbacks: true, class_name: "Enjoy::Catalog::ItemImage"
27
+ alias :images :item_images
28
+ accepts_nested_attributes_for :item_images, allow_destroy: true
29
+
30
+ has_and_belongs_to_many :related_items, :class_name => "Enjoy::Catalog::Item", :inverse_of => :related_items
31
+
32
+ field :price, type: Money, default: nil, localize: Enjoy.configuration.localize
33
+ end
34
+
35
+ def image_styles
36
+ Enjoy::Catalog.configuration.item_image_styles
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Mongoid
4
+ module ItemCategory
5
+ extend ActiveSupport::Concern
6
+ include Enjoy::MongoidPaperclip
7
+
8
+ included do
9
+ field :name, type: String, localize: Enjoy.configuration.localize, default: ""
10
+
11
+ enjoy_cms_mongoid_attached_file(:image,
12
+ styles: lambda { |attachment| attachment.instance.image_styles },
13
+ content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] }
14
+ )
15
+
16
+ acts_as_nested_set
17
+ scope :sorted, -> { order_by([:lft, :asc]) }
18
+
19
+ field :excerpt, type: String, localize: Enjoy.configuration.localize, default: ""
20
+ field :content, type: String, localize: Enjoy.configuration.localize, default: ""
21
+
22
+ embeds_many :item_category_images, cascade_callbacks: true, class_name: "Enjoy::Catalog::ItemCategoryImage"
23
+ alias :images :item_category_images
24
+ accepts_nested_attributes_for :item_category_images, allow_destroy: true
25
+ end
26
+
27
+ def image_styles
28
+ Enjoy::Catalog.configuration.item_category_image_styles
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Mongoid
4
+ module ItemCategoryImage
5
+ extend ActiveSupport::Concern
6
+ # include Enjoy::MongoidPaperclip
7
+
8
+ included do
9
+ embedded_in :item, class_name: "Enjoy::Catalog::ItemCategory"
10
+ end
11
+
12
+ include ::Mongoid::EmbeddedFindable
13
+ module ClassMethods
14
+ def find(id)
15
+ find_through(Enjoy::Catalog::ItemCategory, 'item_category_images', id)
16
+ end
17
+ end
18
+
19
+ def image_styles
20
+ Enjoy::Catalog.configuration.item_category_images_image_styles
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Mongoid
4
+ module ItemImage
5
+ extend ActiveSupport::Concern
6
+ # include Enjoy::MongoidPaperclip
7
+
8
+ included do
9
+ embedded_in :item, class_name: "Enjoy::Catalog::Item"
10
+ end
11
+
12
+
13
+ include ::Mongoid::EmbeddedFindable
14
+ module ClassMethods
15
+ def find(id)
16
+ find_through(Enjoy::Catalog::Item, 'item_images', id)
17
+ end
18
+ end
19
+
20
+ def image_styles
21
+ Enjoy::Catalog.configuration.item_images_image_styles
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,5 @@
1
+ module Enjoy
2
+ module Catalog
3
+ VERSION = "0.2.0"
4
+ end
5
+ end
@@ -0,0 +1,59 @@
1
+ require "enjoy/catalog/version"
2
+
3
+ require 'money-rails'
4
+
5
+ require 'enjoy_cms_mongoid'
6
+ require 'rails_admin_sort_embedded'
7
+ require 'rails_admin_jcrop'
8
+
9
+ require 'enjoy/catalog/configuration'
10
+ require 'enjoy/catalog/engine'
11
+
12
+ module Enjoy
13
+ module Catalog
14
+ class << self
15
+ def orm
16
+ :mongoid
17
+ end
18
+ def mongoid?
19
+ Enjoy::Catalog.orm == :mongoid
20
+ end
21
+ def active_record?
22
+ Enjoy::Catalog.orm == :active_record
23
+ end
24
+ def model_namespace
25
+ "Enjoy::Catalog::Models::#{Enjoy::Catalog.orm.to_s.camelize}"
26
+ end
27
+ def orm_specific(name)
28
+ "#{model_namespace}::#{name}".constantize
29
+ end
30
+ end
31
+
32
+ autoload :Admin, 'enjoy/catalog/admin'
33
+ module Admin
34
+ autoload :Item, 'enjoy/catalog/admin/item'
35
+ autoload :ItemCategory, 'enjoy/catalog/admin/item_category'
36
+ autoload :ItemImage, 'enjoy/catalog/admin/item_image'
37
+ autoload :ItemCategoryImage, 'enjoy/catalog/admin/item_category_image'
38
+ end
39
+
40
+ module Models
41
+ autoload :Item, 'enjoy/catalog/models/item'
42
+ autoload :ItemCategory, 'enjoy/catalog/models/item_category'
43
+ autoload :ItemImage, 'enjoy/catalog/models/item_image'
44
+ autoload :ItemCategoryImage, 'enjoy/catalog/models/item_category_image'
45
+
46
+ module Mongoid
47
+ autoload :Item, 'enjoy/catalog/models/mongoid/item'
48
+ autoload :ItemCategory, 'enjoy/catalog/models/mongoid/item_category'
49
+ autoload :ItemImage, 'enjoy/catalog/models/mongoid/item_image'
50
+ autoload :ItemCategoryImage, 'enjoy/catalog/models/mongoid/item_category_image'
51
+ end
52
+ end
53
+
54
+ module Controllers
55
+ autoload :Items, 'enjoy/catalog/controllers/items'
56
+ autoload :ItemCategories, 'enjoy/catalog/controllers/item_categories'
57
+ end
58
+ end
59
+ end
data/release.sh ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/bash
2
+ bundle update
3
+ git add --all .
4
+ git commit -am "${*:1}"
5
+ git push
6
+ git push gh master
7
+ rake release
metadata ADDED
@@ -0,0 +1,210 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: enjoy_cms_catalog
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Kiseliev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 4.1.0
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '5.0'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 4.1.0
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '5.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: money-rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
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: mongoid_money_field
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: enjoy_cms
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rails_admin_sort_embedded
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: ack_rails_admin_jcrop
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ description: Items catalog with EnjoyCMS support.
132
+ email:
133
+ - dev@enjoycreate.ru
134
+ executables: []
135
+ extensions: []
136
+ extra_rdoc_files: []
137
+ files:
138
+ - ".gitignore"
139
+ - ".ruby-gemset"
140
+ - ".ruby-version"
141
+ - Gemfile
142
+ - LICENSE.txt
143
+ - README.md
144
+ - Rakefile
145
+ - app/assets/javascripts/enjoy_cms_catalog/enjoy_cms_catalog.coffee
146
+ - app/assets/stylesheets/enjoy_cms_catalog/enjoy_cms_catalog.sass
147
+ - app/controllers/enjoy/catalog/item_categories_controller.rb
148
+ - app/controllers/enjoy/catalog/items_controller.rb
149
+ - app/models/concerns/enjoy/catalog/decorators/item.rb
150
+ - app/models/concerns/enjoy/catalog/decorators/item_category.rb
151
+ - app/models/concerns/enjoy/catalog/decorators/item_category_image.rb
152
+ - app/models/concerns/enjoy/catalog/decorators/item_image.rb
153
+ - app/models/enjoy/catalog/item.rb
154
+ - app/models/enjoy/catalog/item_category.rb
155
+ - app/models/enjoy/catalog/item_category_image.rb
156
+ - app/models/enjoy/catalog/item_image.rb
157
+ - app/views/enjoy/catalog/item_categories/index.html.slim
158
+ - app/views/enjoy/catalog/item_categories/show.html.slim
159
+ - app/views/enjoy/catalog/items/index.html.slim
160
+ - app/views/enjoy/catalog/items/show.html.slim
161
+ - bin/console
162
+ - bin/setup
163
+ - config/initializers/rails_admin.rb
164
+ - config/routes.rb
165
+ - enjoy_cms_catalog.gemspec
166
+ - lib/enjoy/catalog/admin.rb
167
+ - lib/enjoy/catalog/admin/item.rb
168
+ - lib/enjoy/catalog/admin/item_category.rb
169
+ - lib/enjoy/catalog/admin/item_category_image.rb
170
+ - lib/enjoy/catalog/admin/item_image.rb
171
+ - lib/enjoy/catalog/configuration.rb
172
+ - lib/enjoy/catalog/controllers/item_categories.rb
173
+ - lib/enjoy/catalog/controllers/items.rb
174
+ - lib/enjoy/catalog/engine.rb
175
+ - lib/enjoy/catalog/models/item.rb
176
+ - lib/enjoy/catalog/models/item_category.rb
177
+ - lib/enjoy/catalog/models/item_category_image.rb
178
+ - lib/enjoy/catalog/models/item_image.rb
179
+ - lib/enjoy/catalog/models/mongoid/item.rb
180
+ - lib/enjoy/catalog/models/mongoid/item_category.rb
181
+ - lib/enjoy/catalog/models/mongoid/item_category_image.rb
182
+ - lib/enjoy/catalog/models/mongoid/item_image.rb
183
+ - lib/enjoy/catalog/version.rb
184
+ - lib/enjoy_cms_catalog.rb
185
+ - release.sh
186
+ homepage: https://github.com/enjoycreative/enjoy_cms_catalog
187
+ licenses:
188
+ - MIT
189
+ metadata: {}
190
+ post_install_message:
191
+ rdoc_options: []
192
+ require_paths:
193
+ - lib
194
+ required_ruby_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ requirements: []
205
+ rubyforge_project:
206
+ rubygems_version: 2.4.8
207
+ signing_key:
208
+ specification_version: 4
209
+ summary: Items catalog with EnjoyCMS support.
210
+ test_files: []