enjoy_cms_catalog 0.3.7 → 0.4.0.beta3

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/app/{models/concerns/enjoy/catalog/decorators/item_category.rb → controllers/concerns/enjoy/catalog/decorators/categories.rb} +1 -1
  4. data/app/controllers/enjoy/catalog/categories_controller.rb +7 -0
  5. data/app/{controllers/concerns/enjoy/catalog/decorators/item_categories.rb → models/concerns/enjoy/catalog/decorators/category.rb} +1 -1
  6. data/app/models/concerns/enjoy/catalog/decorators/{item_category_image.rb → category_image.rb} +1 -1
  7. data/app/models/enjoy/catalog/category.rb +12 -0
  8. data/app/models/enjoy/catalog/category_image.rb +16 -0
  9. data/app/models/enjoy/catalog/item_image.rb +12 -7
  10. data/app/views/enjoy/catalog/{item_categories → categories}/index.html.slim +4 -1
  11. data/app/views/enjoy/catalog/{item_categories → categories}/show.html.slim +9 -6
  12. data/app/views/enjoy/catalog/items/index.html.slim +4 -2
  13. data/app/views/enjoy/catalog/items/show.html.slim +3 -0
  14. data/config/initializers/enjoy_catalog.rb +88 -0
  15. data/config/locales/enjoy.catalog.ru.yml +11 -4
  16. data/config/locales/ru.kaminari.yml +17 -0
  17. data/enjoy_cms_catalog.gemspec +3 -3
  18. data/lib/enjoy/catalog/admin/{item_category.rb → category.rb} +22 -10
  19. data/lib/enjoy/catalog/admin/category_image.rb +31 -0
  20. data/lib/enjoy/catalog/admin/item.rb +16 -7
  21. data/lib/enjoy/catalog/admin/item_image.rb +28 -12
  22. data/lib/enjoy/catalog/admin.rb +0 -2
  23. data/lib/enjoy/catalog/configuration.rb +46 -26
  24. data/lib/enjoy/catalog/controllers/{item_categories.rb → categories.rb} +32 -21
  25. data/lib/enjoy/catalog/controllers/items.rb +25 -36
  26. data/lib/enjoy/catalog/models/category.rb +50 -0
  27. data/lib/enjoy/catalog/models/category_image.rb +22 -0
  28. data/lib/enjoy/catalog/models/item.rb +27 -4
  29. data/lib/enjoy/catalog/models/item_image.rb +8 -0
  30. data/lib/enjoy/catalog/models/mongoid/category.rb +32 -0
  31. data/lib/enjoy/catalog/models/mongoid/category_image.rb +20 -0
  32. data/lib/enjoy/catalog/models/mongoid/item.rb +5 -24
  33. data/lib/enjoy/catalog/models/mongoid/item_image.rb +0 -10
  34. data/lib/enjoy/catalog/routes.rb +57 -13
  35. data/lib/enjoy/catalog/version.rb +1 -1
  36. data/lib/enjoy_cms_catalog.rb +55 -48
  37. data/lib/generators/enjoy/catalog/all_generator.rb +2 -2
  38. data/lib/generators/enjoy/catalog/config/install_generator.rb +3 -3
  39. data/lib/generators/enjoy/catalog/config/templates/enjoy_catalog.erb +3 -3
  40. data/lib/generators/enjoy/catalog/controllers/all_generator.rb +1 -1
  41. data/lib/generators/enjoy/catalog/controllers/{item_category_generator.rb → category_generator.rb} +4 -4
  42. data/lib/generators/enjoy/catalog/controllers/item_generator.rb +3 -3
  43. data/lib/generators/enjoy/catalog/controllers/templates/{item_categories_controller.erb → categories_controller.erb} +2 -2
  44. data/lib/generators/enjoy/catalog/controllers/templates/items_controller.erb +2 -2
  45. data/lib/generators/enjoy/catalog/models/all_generator.rb +2 -2
  46. data/lib/generators/enjoy/catalog/models/{item_category_generator.rb → category_generator.rb} +9 -5
  47. data/lib/generators/enjoy/catalog/models/{item_category_image_generator.rb → category_image_generator.rb} +11 -7
  48. data/lib/generators/enjoy/catalog/models/item_image_generator.rb +5 -1
  49. data/lib/generators/enjoy/catalog/models/templates/category.erb +34 -0
  50. data/lib/generators/enjoy/catalog/models/templates/category_image.erb +30 -0
  51. data/lib/generators/enjoy/catalog/models/templates/item.erb +4 -3
  52. data/lib/generators/enjoy/catalog/models/templates/item_image.erb +3 -3
  53. metadata +37 -36
  54. data/app/controllers/enjoy/catalog/item_categories_controller.rb +0 -7
  55. data/app/models/enjoy/catalog/item_category.rb +0 -11
  56. data/app/models/enjoy/catalog/item_category_image.rb +0 -11
  57. data/config/initializers/rails_admin.rb +0 -8
  58. data/lib/enjoy/catalog/admin/item_category_image.rb +0 -15
  59. data/lib/enjoy/catalog/models/item_category.rb +0 -27
  60. data/lib/enjoy/catalog/models/item_category_image.rb +0 -14
  61. data/lib/enjoy/catalog/models/mongoid/item_category.rb +0 -51
  62. data/lib/enjoy/catalog/models/mongoid/item_category_image.rb +0 -29
  63. data/lib/generators/enjoy/catalog/models/templates/item_category.erb +0 -33
  64. data/lib/generators/enjoy/catalog/models/templates/item_category_image.erb +0 -30
@@ -1,40 +1,51 @@
1
1
  module Enjoy::Catalog
2
2
  module Controllers
3
- module ItemCategories
3
+ module Categories
4
4
  extend ActiveSupport::Concern
5
5
 
6
+ included do
7
+ if Enjoy::Catalog.config.breadcrumbs_on_rails_support
8
+ add_breadcrumb I18n.t('enjoy.breadcrumbs.catalog'), :enjoy_catalog_path
9
+ end
10
+ end
11
+
6
12
  def index
7
- @item_categories = item_category_class.enabled.sorted.to_a
8
- @root_catalog = item_category_class.enabled.roots.sorted.all.to_a
13
+ @categories = category_class.enabled.sorted.to_a
14
+ @root_catalog = category_class.enabled.roots.sorted.all.to_a
9
15
  # index_crumbs
10
16
  end
11
17
 
12
18
  def show
13
- @item_category = item_category_class.enabled.find(params[:id])
14
- if !@item_category.text_slug.blank? and @item_category.text_slug != params[:id]
15
- redirect_to @item_category, status_code: 301
19
+ @category = category_class.enabled.find(params[:id])
20
+ if !@category.text_slug.blank? and @category.text_slug != params[:id]
21
+ redirect_to @category, status_code: 301
16
22
  return
17
23
  end
18
- @seo_parent_page = find_seo_page(item_categories_path)
24
+ @seo_parent_page = find_seo_page(url_for(action: :index))
25
+
26
+ @children = @category.children.enabled.sorted.all.to_a
27
+ @items = @category.items.enabled.sorted.all.to_a
28
+
29
+ if Enjoy::Catalog.config.breadcrumbs_on_rails_support
30
+ add_breadcrumb @category.name, url_for(@category)
31
+ end
19
32
 
20
- @children = @item_category.children.enabled.sorted.all.to_a
21
- @items = @item_category.items.enabled.sorted.all.to_a
22
33
 
23
34
  # index_crumbs
24
35
  # category_crumbs
25
36
  end
26
37
 
27
38
  def page_title
28
- if @item_category
29
- @item_category.page_title
39
+ if @category
40
+ @category.page_title
30
41
  else
31
42
  super
32
43
  end
33
44
  end
34
45
 
35
46
  private
36
- def item_category_class
37
- Enjoy::Catalog::ItemCategory
47
+ def category_class
48
+ Enjoy::Catalog::Category
38
49
  end
39
50
  def item_class
40
51
  Enjoy::Catalog::Item
@@ -51,24 +62,24 @@ module Enjoy::Catalog
51
62
  # else
52
63
  # catalog_title = Settings.ns('breadcrumbs').catalog_title(default: "Каталог", label: "'Каталог' в breadcrumbs")
53
64
  # _crumb = catalog_title
54
- # add_crumb _crumb, item_categories_path
65
+ # add_crumb _crumb, news_categories_path
55
66
  # end
56
67
  # end
57
68
  #
58
69
  # def category_crumbs
59
- # if @item_category
60
- # _parent = @item_category.parent
70
+ # if @news_category
71
+ # _parent = @news_category.parent
61
72
  # if _parent
62
73
  # _crumb = _parent.name if _crumb.blank?
63
74
  # _crumb = _parent.title if _crumb.blank?
64
75
  # _crumb = _parent.h1 if _crumb.blank?
65
- # add_crumb _crumb, item_category_path(_parent)
76
+ # add_crumb _crumb, news_category_path(_parent)
66
77
  # _crumb = nil
67
78
  # end
68
- # _crumb = @item_category.name if _crumb.blank?
69
- # _crumb = @item_category.title if _crumb.blank?
70
- # _crumb = @item_category.h1 if _crumb.blank?
71
- # add_crumb _crumb, item_category_path(@item_category)
79
+ # _crumb = @news_category.name if _crumb.blank?
80
+ # _crumb = @news_category.title if _crumb.blank?
81
+ # _crumb = @news_category.h1 if _crumb.blank?
82
+ # add_crumb _crumb, news_category_path(@news_category)
72
83
  # end
73
84
  # end
74
85
  end
@@ -3,59 +3,48 @@ module Enjoy::Catalog
3
3
  module Items
4
4
  extend ActiveSupport::Concern
5
5
 
6
+ included do
7
+ if Enjoy::Catalog.config.breadcrumbs_on_rails_support
8
+ add_breadcrumb I18n.t('enjoy.breadcrumbs.items'), :enjoy_items_path
9
+ end
10
+ end
11
+
6
12
  def index
7
- @items = item_class.enabled.sorted.to_a
8
- # index_crumbs
13
+ @item = item_class.enabled.sorted
14
+
15
+ unless Enjoy::Catalog.config.items_per_page.nil?
16
+ @item = @item.page(params[:page])
17
+ end
9
18
  end
10
19
 
11
20
  def show
12
21
  @item = item_class.enabled.find(params[:id])
13
- if !@item.text_slug.blank? and @item.text_slug != params[:id]
22
+
23
+ if @item and @item.text_slug != params[:id]
14
24
  redirect_to @item, status_code: 301
15
- return
25
+ return true
16
26
  end
17
- @parent_seo_page = find_seo_page(item_categories_path) if @seo_page.blank?
18
- # item_crumbs
19
- end
20
27
 
21
- def page_title
22
- if @item
23
- @item.page_title
24
- else
25
- super
28
+ if Enjoy::Catalog.config.breadcrumbs_on_rails_support
29
+ add_breadcrumb @item.name, url_for(@item)
26
30
  end
27
31
  end
28
32
 
29
33
  private
30
- def item_category_class
31
- Enjoy::Catalog::ItemCategory
34
+ def category_class
35
+ Enjoy::Catalog::Category
32
36
  end
33
37
  def item_class
34
38
  Enjoy::Catalog::Item
35
39
  end
40
+ def page_title
41
+ if @item.class.name == model.name
42
+ @item.page_title
43
+ else
44
+ super
45
+ end
46
+ end
36
47
 
37
- # def item_crumbs
38
- # if @item
39
- # if @item.item_categories.enabled.count == 1
40
- # if @parent_seo_page
41
- # _crumb = @parent_seo_page.name
42
- # _crumb = @parent_seo_page.title if _crumb.blank?
43
- # _crumb = @parent_seo_page.h1 if _crumb.blank?
44
- # add_crumb _crumb, @parent_seo_page.fullpath
45
- # end
46
- #
47
- # @item_category = @item.item_categories.enabled.first
48
- # _crumb = @item_category.name
49
- # _crumb = @item_category.title if _crumb.blank?
50
- # _crumb = @item_category.h1 if _crumb.blank?
51
- # add_crumb _crumb, item_category_path(@item_category)
52
- # end
53
- # _crumb = @item.name
54
- # _crumb = @item.title if _crumb.blank?
55
- # _crumb = @item.h1 if _crumb.blank?
56
- # add_crumb _crumb, item_path(@item)
57
- # end
58
- # end
59
48
  end
60
49
  end
61
50
  end
@@ -0,0 +1,50 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Category
4
+ extend ActiveSupport::Concern
5
+ include Enjoy::Model
6
+ include Enjoy::Enableable
7
+ if Enjoy::Catalog.config.seo_support
8
+ include Enjoy::Seo::Seoable
9
+ include Enjoy::Seo::SitemapDataField
10
+ end
11
+ if Enjoy::Catalog.config.pages_support
12
+ include Enjoy::Pages::Connectable
13
+ end
14
+ if Enjoy::Catalog.config.gallery_support
15
+ include Enjoy::Gallery::Paperclipable
16
+ end
17
+
18
+ include Enjoy::Catalog.orm_specific('Category')
19
+
20
+ include ManualSlug
21
+
22
+ included do
23
+ manual_slug :name
24
+
25
+ if Enjoy::Catalog.config.pages_support and Enjoy::Catalog.configuration.can_connect_category_with_pages
26
+ enjoy_connectable_field :connected_pages
27
+ end
28
+
29
+ if Enjoy::Catalog.config.gallery_support and Enjoy::Catalog.configuration.category_image_styles
30
+ enjoy_cms_attached_file(:image,
31
+ styles: lambda { |attachment| attachment.instance.image_styles }
32
+ )
33
+ end
34
+ end
35
+
36
+ def item_class
37
+ Enjoy::Catalog::Item
38
+ end
39
+
40
+ def image_styles
41
+ Enjoy::Catalog.configuration.category_image_styles
42
+ end
43
+
44
+ def image_jcrop_options
45
+ {}
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,22 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module CategoryImage
4
+ extend ActiveSupport::Concern
5
+ # include Enjoy::Model
6
+ # include Enjoy::Enableable
7
+
8
+ include Enjoy::Catalog.orm_specific('CategoryImage')
9
+
10
+ included do
11
+ end
12
+
13
+ def image_styles
14
+ Enjoy::Catalog.configuration.category_images_image_styles
15
+ end
16
+
17
+ def image_jcrop_options
18
+ {}
19
+ end
20
+ end
21
+ end
22
+ end
@@ -4,9 +4,16 @@ module Enjoy::Catalog
4
4
  extend ActiveSupport::Concern
5
5
  include Enjoy::Model
6
6
  include Enjoy::Enableable
7
- include Enjoy::Seoable
8
- include Enjoy::SitemapDataField
9
- include Enjoy::Connectable
7
+ if Enjoy::Catalog.config.seo_support
8
+ include Enjoy::Seo::Seoable
9
+ include Enjoy::Seo::SitemapDataField
10
+ end
11
+ if Enjoy::Catalog.config.pages_support
12
+ include Enjoy::Pages::Connectable
13
+ end
14
+ if Enjoy::Catalog.config.gallery_support
15
+ include Enjoy::Gallery::Paperclipable
16
+ end
10
17
 
11
18
  include Enjoy::Catalog.orm_specific('Item')
12
19
 
@@ -15,7 +22,23 @@ module Enjoy::Catalog
15
22
  included do
16
23
  manual_slug :name
17
24
 
18
- enjoy_connectable_field :connected_pages
25
+ if Enjoy::Catalog.config.pages_support and Enjoy::Catalog.configuration.can_connect_items_with_pages
26
+ enjoy_connectable_field :connected_pages
27
+ end
28
+
29
+ if Enjoy::Catalog.config.gallery_support and Enjoy::Catalog.configuration.item_image_styles
30
+ enjoy_cms_attached_file(:image,
31
+ styles: lambda { |attachment| attachment.instance.image_styles }
32
+ )
33
+ end
34
+ end
35
+
36
+ def image_styles
37
+ Enjoy::Catalog.configuration.item_image_styles
38
+ end
39
+
40
+ def image_jcrop_options
41
+ {}
19
42
  end
20
43
  end
21
44
  end
@@ -9,6 +9,14 @@ module Enjoy::Catalog
9
9
 
10
10
  included do
11
11
  end
12
+
13
+ def image_styles
14
+ Enjoy::Catalog.configuration.item_images_image_styles
15
+ end
16
+
17
+ def image_jcrop_options
18
+ {}
19
+ end
12
20
  end
13
21
  end
14
22
  end
@@ -0,0 +1,32 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Mongoid
4
+ module Category
5
+ extend ActiveSupport::Concern
6
+ include Enjoy::HtmlField
7
+
8
+ included do
9
+ field :name, type: String, localize: Enjoy::Catalog.configuration.localize, default: ""
10
+
11
+ acts_as_nested_set
12
+ scope :sorted, -> { order_by([:lft, :asc]) }
13
+
14
+ enjoy_cms_html_field :excerpt, type: String, localize: Enjoy::Catalog.configuration.localize, default: ""
15
+ enjoy_cms_html_field :content, type: String, localize: Enjoy::Catalog.configuration.localize, default: ""
16
+
17
+ embeds_many :category_images, cascade_callbacks: true, class_name: "Enjoy::Catalog::CategoryImage"
18
+ alias :images :category_images
19
+ accepts_nested_attributes_for :category_images, allow_destroy: true
20
+ end
21
+
22
+ def items
23
+ item_class.in(category_ids: self.id)
24
+ end
25
+
26
+ def all_items
27
+ item_class.any_in(category_ids: self.self_and_descendants.map(&:id))
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ module Enjoy::Catalog
2
+ module Models
3
+ module Mongoid
4
+ module CategoryImage
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ embedded_in :item, class_name: "Enjoy::Catalog::Category"
9
+ end
10
+
11
+ include ::Mongoid::EmbeddedFindable
12
+ module ClassMethods
13
+ def find(id)
14
+ find_through(Enjoy::Catalog::Category, 'category_images', id)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -3,30 +3,19 @@ module Enjoy::Catalog
3
3
  module Mongoid
4
4
  module Item
5
5
  extend ActiveSupport::Concern
6
- include Enjoy::MongoidPaperclip
7
6
 
8
7
  include Enjoy::HtmlField
9
8
 
10
9
  included do
11
- if defined?(RailsAdminComments)
12
- include RailsAdminComments::Commentable
13
- end
14
-
15
- field :name, type: String, localize: Enjoy.configuration.localize, default: ""
16
-
17
- enjoy_cms_mongoid_attached_file(:image,
18
- styles: lambda { |attachment| attachment.instance.image_styles },
19
- content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] }
20
- )
10
+ field :name, type: String, localize: Enjoy::Catalog.configuration.localize, default: ""
21
11
 
22
12
  acts_as_nested_set
23
13
  scope :sorted, -> { order_by([:lft, :asc]) }
24
14
 
25
- enjoy_cms_html_field :excerpt, type: String, localize: Enjoy.configuration.localize, default: ""
26
- enjoy_cms_html_field :content, type: String, localize: Enjoy.configuration.localize, default: ""
15
+ enjoy_cms_html_field :excerpt, type: String, localize: Enjoy::Catalog.configuration.localize, default: ""
16
+ enjoy_cms_html_field :content, type: String, localize: Enjoy::Catalog.configuration.localize, default: ""
27
17
 
28
- has_and_belongs_to_many :item_categories, class_name: "Enjoy::Catalog::ItemCategory", inverse_of: nil
29
- alias :categories :item_categories
18
+ has_and_belongs_to_many :categories, class_name: "Enjoy::Catalog::Category", inverse_of: nil
30
19
 
31
20
  embeds_many :item_images, cascade_callbacks: true, class_name: "Enjoy::Catalog::ItemImage"
32
21
  alias :images :item_images
@@ -34,15 +23,7 @@ module Enjoy::Catalog
34
23
 
35
24
  has_and_belongs_to_many :related_items, :class_name => "Enjoy::Catalog::Item", :inverse_of => :related_items
36
25
 
37
- field :price, type: Money, default: nil, localize: Enjoy.configuration.localize
38
- end
39
-
40
- def image_styles
41
- Enjoy::Catalog.configuration.item_image_styles
42
- end
43
-
44
- def image_jcrop_options
45
- {}
26
+ field :price, type: Money, default: nil, localize: Enjoy::Catalog.configuration.localize
46
27
  end
47
28
  end
48
29
  end
@@ -3,27 +3,17 @@ module Enjoy::Catalog
3
3
  module Mongoid
4
4
  module ItemImage
5
5
  extend ActiveSupport::Concern
6
- # include Enjoy::MongoidPaperclip
7
6
 
8
7
  included do
9
8
  embedded_in :item, class_name: "Enjoy::Catalog::Item"
10
9
  end
11
10
 
12
-
13
11
  include ::Mongoid::EmbeddedFindable
14
12
  module ClassMethods
15
13
  def find(id)
16
14
  find_through(Enjoy::Catalog::Item, 'item_images', id)
17
15
  end
18
16
  end
19
-
20
- def image_styles
21
- Enjoy::Catalog.configuration.item_images_image_styles
22
- end
23
-
24
- def image_jcrop_options
25
- {}
26
- end
27
17
  end
28
18
  end
29
19
  end
@@ -1,33 +1,77 @@
1
1
  module ActionDispatch::Routing
2
2
  class Mapper
3
-
4
3
  def enjoy_cms_catalog_routes(config = {})
5
4
  routes_config = {
6
5
  use_items_path: true,
7
- use_item_categories_path: true,
8
- use_catalog_path: true
6
+ use_categories_path: true,
7
+ use_catalog_path: true,
8
+ catalog_path: 'catalog',
9
+ classes: {
10
+ items: :items,
11
+ categories: :categories,
12
+ catalog_controller: :categories
13
+ },
14
+ paths: {
15
+ items: :items,
16
+ categories: :categories
17
+ },
18
+ pagination: {
19
+ items: true,
20
+ categories: true,
21
+ category_items: true
22
+ },
23
+ actions: {
24
+ items: [:show],
25
+ categories: [:show],
26
+ }
9
27
  }
10
- routes_config.merge!(config)
28
+ routes_config.deep_merge!(config)
29
+
30
+ generate_enjoy_catalog_user_routes(routes_config)
31
+ generate_enjoy_catalog_cms_routes(routes_config)
32
+ end
33
+
34
+
35
+ private
36
+ def generate_enjoy_catalog_user_routes(routes_config)
37
+ if !routes_config[:use_items_path] and !routes_config[:classes][:items].nil?
38
+ resources routes_config[:classes][:items].to_sym, only: routes_config[:actions][:items], path: routes_config[:paths][:items] do
39
+ get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:items]
40
+ end
41
+ end
11
42
 
43
+ if !routes_config[:use_categories_path] and !routes_config[:classes][:categories].nil?
44
+ resources routes_config[:classes][:categories].to_sym, only: routes_config[:actions][:categories], path: routes_config[:paths][:categories] do
45
+ get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:categories]
46
+ get 'items(/page/:page)', action: :items, on: :member, as: :items if routes_config[:pagination][:category_items]
47
+ end
48
+ end
49
+
50
+ if !routes_config[:use_catalog_path] and !routes_config[:classes][:catalog_controller].nil?
51
+ get "#{routes_config[:catalog_path]}" => "#{routes_config[:classes][:catalog_controller]}#index"
52
+ end
53
+ end
54
+
55
+ def generate_enjoy_catalog_cms_routes(routes_config)
12
56
  scope module: 'enjoy' do
13
57
  scope module: 'catalog' do
14
- if routes_config[:use_items_path]
15
- resources :items, only: [:show], as: :enjoy_catalog_items do
16
- get '(/page/:page)', action: :index, on: :collection, as: ""
58
+ if routes_config[:use_items_path] and !routes_config[:classes][:items].nil?
59
+ resources routes_config[:classes][:items].to_sym, only: routes_config[:actions][:items], path: routes_config[:paths][:items], as: :enjoy_catalog_items do
60
+ get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:items]
17
61
  end
18
62
  end
19
63
 
20
- if routes_config[:use_item_categories_path]
21
- resources :item_categories, only: [:index, :show], as: :enjoy_catalog_item_categories do
22
- get 'items(/page/:page)', action: :items, on: :member, as: :items
64
+ if routes_config[:use_categories_path] and !routes_config[:classes][:categories].nil?
65
+ resources routes_config[:classes][:categories].to_sym, only: routes_config[:actions][:categories], path: routes_config[:paths][:categories], as: :enjoy_catalog_categories do
66
+ get '(/page/:page)', action: :index, on: :collection, as: "" if routes_config[:pagination][:categories]
67
+ get 'items(/page/:page)', action: :items, on: :member, as: :items if routes_config[:pagination][:category_items]
23
68
  end
24
69
  end
25
- if routes_config[:use_catalog_path]
26
- get 'catalog' => 'item_categories#index', as: :enjoy_catalog
70
+ if routes_config[:use_catalog_path] and !routes_config[:classes][:catalog_controller].nil?
71
+ get "#{routes_config[:catalog_path]}" => "#{routes_config[:classes][:catalog_controller]}#index", as: :enjoy_catalog
27
72
  end
28
73
  end
29
74
  end
30
-
31
75
  end
32
76
 
33
77
  end
@@ -1,5 +1,5 @@
1
1
  module Enjoy
2
2
  module Catalog
3
- VERSION = "0.3.7"
3
+ VERSION = "0.4.0.beta3"
4
4
  end
5
5
  end
@@ -1,62 +1,69 @@
1
+ unless defined?(Enjoy) && Enjoy.respond_to?(:orm) && [:active_record, :mongoid].include?(Enjoy.orm)
2
+ puts "please use enjoy_cms_mongoid or enjoy_cms_activerecord"
3
+ puts "also: please use enjoy_cms_mongoid or enjoy_cms_activerecord and not enjoy_cms directly"
4
+ exit 1
5
+ end
6
+
1
7
  require "enjoy/catalog/version"
8
+ require 'enjoy/catalog/engine'
9
+ require 'enjoy/catalog/configuration'
2
10
 
3
11
  require 'enjoy/catalog/routes'
4
12
 
5
13
  require 'money-rails'
14
+ # require 'mongoid_money_field'
6
15
 
7
- require 'enjoy_cms'
8
-
9
- require 'rails_admin_sort_embedded'
10
- require 'rails_admin_jcrop'
16
+ module Enjoy::Catalog
17
+ class << self
18
+ def orm
19
+ Enjoy.orm
20
+ end
21
+ def mongoid?
22
+ Enjoy::Catalog.orm == :mongoid
23
+ end
24
+ def active_record?
25
+ Enjoy::Catalog.orm == :active_record
26
+ end
27
+ def model_namespace
28
+ "Enjoy::Catalog::Models::#{Enjoy::Catalog.orm.to_s.camelize}"
29
+ end
30
+ def orm_specific(name)
31
+ "#{model_namespace}::#{name}".constantize
32
+ end
33
+ end
11
34
 
12
- require 'enjoy/catalog/configuration'
13
- require 'enjoy/catalog/engine'
35
+ autoload :Admin, 'enjoy/catalog/admin'
36
+ module Admin
37
+ autoload :Item, 'enjoy/catalog/admin/item'
38
+ autoload :Category, 'enjoy/catalog/admin/category'
39
+ autoload :ItemImage, 'enjoy/catalog/admin/item_image'
40
+ autoload :CategoryImage, 'enjoy/catalog/admin/category_image'
41
+ end
14
42
 
15
- module Enjoy
16
- module Catalog
17
- class << self
18
- def orm
19
- :mongoid
20
- end
21
- def mongoid?
22
- Enjoy::Catalog.orm == :mongoid
23
- end
24
- def active_record?
25
- Enjoy::Catalog.orm == :active_record
26
- end
27
- def model_namespace
28
- "Enjoy::Catalog::Models::#{Enjoy::Catalog.orm.to_s.camelize}"
29
- end
30
- def orm_specific(name)
31
- "#{model_namespace}::#{name}".constantize
32
- end
33
- end
43
+ module Models
44
+ autoload :Item, 'enjoy/catalog/models/item'
45
+ autoload :Category, 'enjoy/catalog/models/category'
46
+ autoload :ItemImage, 'enjoy/catalog/models/item_image'
47
+ autoload :CategoryImage, 'enjoy/catalog/models/category_image'
34
48
 
35
- autoload :Admin, 'enjoy/catalog/admin'
36
- module Admin
37
- autoload :Item, 'enjoy/catalog/admin/item'
38
- autoload :ItemCategory, 'enjoy/catalog/admin/item_category'
39
- autoload :ItemImage, 'enjoy/catalog/admin/item_image'
40
- autoload :ItemCategoryImage, 'enjoy/catalog/admin/item_category_image'
49
+ module Mongoid
50
+ autoload :Item, 'enjoy/catalog/models/mongoid/item'
51
+ autoload :Category, 'enjoy/catalog/models/mongoid/category'
52
+ autoload :ItemImage, 'enjoy/catalog/models/mongoid/item_image'
53
+ autoload :CategoryImage, 'enjoy/catalog/models/mongoid/category_image'
41
54
  end
42
55
 
43
- module Models
44
- autoload :Item, 'enjoy/catalog/models/item'
45
- autoload :ItemCategory, 'enjoy/catalog/models/item_category'
46
- autoload :ItemImage, 'enjoy/catalog/models/item_image'
47
- autoload :ItemCategoryImage, 'enjoy/catalog/models/item_category_image'
48
-
49
- module Mongoid
50
- autoload :Item, 'enjoy/catalog/models/mongoid/item'
51
- autoload :ItemCategory, 'enjoy/catalog/models/mongoid/item_category'
52
- autoload :ItemImage, 'enjoy/catalog/models/mongoid/item_image'
53
- autoload :ItemCategoryImage, 'enjoy/catalog/models/mongoid/item_category_image'
54
- end
55
- end
56
+ # module ActiveRecord
57
+ # autoload :Item, 'enjoy/catalog/models/active_record/item'
58
+ # autoload :Category, 'enjoy/catalog/models/active_record/category'
59
+ # autoload :ItemImage, 'enjoy/catalog/models/active_record/item_image'
60
+ # autoload :CategoryImage, 'enjoy/catalog/models/active_record/category_image'
61
+ # end
62
+ end
56
63
 
57
- module Controllers
58
- autoload :Items, 'enjoy/catalog/controllers/items'
59
- autoload :ItemCategories, 'enjoy/catalog/controllers/item_categories'
60
- end
64
+ module Controllers
65
+ autoload :Items, 'enjoy/catalog/controllers/items'
66
+ autoload :Categories, 'enjoy/catalog/controllers/categories'
61
67
  end
68
+
62
69
  end