enjoy_cms_news 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 (68) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +4 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +41 -0
  9. data/Rakefile +1 -0
  10. data/app/assets/javascripts/enjoy_cms_news.coffee +0 -0
  11. data/app/assets/stylesheets/enjoy_cms_news.sass +0 -0
  12. data/app/controllers/concerns/enjoy/news/decorators/categories.rb +5 -0
  13. data/app/controllers/concerns/enjoy/news/decorators/news_controller.rb +5 -0
  14. data/app/controllers/enjoy/news/categories_controller.rb +7 -0
  15. data/app/controllers/enjoy/news/news_controller.rb +7 -0
  16. data/app/models/concerns/enjoy/news/decorators/category.rb +5 -0
  17. data/app/models/concerns/enjoy/news/decorators/image.rb +5 -0
  18. data/app/models/concerns/enjoy/news/decorators/news.rb +5 -0
  19. data/app/models/enjoy/news/category.rb +11 -0
  20. data/app/models/enjoy/news/image.rb +16 -0
  21. data/app/models/enjoy/news/news.rb +16 -0
  22. data/app/views/enjoy/news/news/_list.html.slim +6 -0
  23. data/app/views/enjoy/news/news/index.html.slim +4 -0
  24. data/app/views/enjoy/news/news/show.html.slim +8 -0
  25. data/bin/console +14 -0
  26. data/bin/setup +7 -0
  27. data/config/initializers/enjoy_news.rb +72 -0
  28. data/config/locales/enjoy.news.ru.yml +13 -0
  29. data/enjoy_cms_news.gemspec +38 -0
  30. data/lib/enjoy/news/admin/category.rb +143 -0
  31. data/lib/enjoy/news/admin/image.rb +31 -0
  32. data/lib/enjoy/news/admin/news.rb +101 -0
  33. data/lib/enjoy/news/admin.rb +6 -0
  34. data/lib/enjoy/news/configuration.rb +61 -0
  35. data/lib/enjoy/news/controllers/categories.rb +72 -0
  36. data/lib/enjoy/news/controllers/news.rb +39 -0
  37. data/lib/enjoy/news/engine.rb +7 -0
  38. data/lib/enjoy/news/models/active_record/category.rb +25 -0
  39. data/lib/enjoy/news/models/active_record/image.rb +16 -0
  40. data/lib/enjoy/news/models/active_record/news.rb +29 -0
  41. data/lib/enjoy/news/models/category.rb +62 -0
  42. data/lib/enjoy/news/models/image.rb +20 -0
  43. data/lib/enjoy/news/models/mongoid/category.rb +28 -0
  44. data/lib/enjoy/news/models/mongoid/image.rb +22 -0
  45. data/lib/enjoy/news/models/mongoid/news.rb +39 -0
  46. data/lib/enjoy/news/models/news.rb +57 -0
  47. data/lib/enjoy/news/routes.rb +56 -0
  48. data/lib/enjoy/news/version.rb +5 -0
  49. data/lib/enjoy_cms_news.rb +69 -0
  50. data/lib/generators/enjoy/news/all_generator.rb +17 -0
  51. data/lib/generators/enjoy/news/config/install_generator.rb +13 -0
  52. data/lib/generators/enjoy/news/config/templates/enjoy_news.erb +28 -0
  53. data/lib/generators/enjoy/news/controllers/all_generator.rb +28 -0
  54. data/lib/generators/enjoy/news/controllers/category_generator.rb +43 -0
  55. data/lib/generators/enjoy/news/controllers/news_generator.rb +43 -0
  56. data/lib/generators/enjoy/news/controllers/templates/categories_controller.erb +10 -0
  57. data/lib/generators/enjoy/news/controllers/templates/news_controller.erb +10 -0
  58. data/lib/generators/enjoy/news/migrations/migration_generator.rb +18 -0
  59. data/lib/generators/enjoy/news/migrations/templates/news.rb +92 -0
  60. data/lib/generators/enjoy/news/models/all_generator.rb +33 -0
  61. data/lib/generators/enjoy/news/models/category_generator.rb +39 -0
  62. data/lib/generators/enjoy/news/models/image_generator.rb +39 -0
  63. data/lib/generators/enjoy/news/models/news_generator.rb +34 -0
  64. data/lib/generators/enjoy/news/models/templates/category.erb +30 -0
  65. data/lib/generators/enjoy/news/models/templates/image.erb +30 -0
  66. data/lib/generators/enjoy/news/models/templates/item.erb +38 -0
  67. data/release.sh +7 -0
  68. metadata +194 -0
@@ -0,0 +1,28 @@
1
+ require 'rails/generators'
2
+
3
+ module Enjoy::News::Controllers
4
+ class AllGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :class_name, type: :string
7
+ argument :category_class_name_arg, type: :string, default: ""
8
+
9
+ desc 'Enjoy::News Controllers generator'
10
+ def all
11
+ generate "enjoy:news:controllers:news #{camelcased_class_name}"
12
+ generate "enjoy:news:controllers:category #{category_class_name}"
13
+ end
14
+
15
+ private
16
+ def capitalized_class_name
17
+ class_name.capitalize
18
+ end
19
+ def camelcased_class_name
20
+ class_name.camelcase
21
+ end
22
+
23
+ def category_class_name
24
+ category_class_name_arg.blank? ? "#{camelcased_class_name}Category" : category_class_name_arg
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,43 @@
1
+ require 'rails/generators'
2
+
3
+ module Enjoy::News::Controllers
4
+ class CategoryGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :class_name, type: :string
7
+ argument :news_class_name_arg, type: :string, default: ""
8
+
9
+ desc 'Enjoy::News Category Controller generator'
10
+ def category
11
+ template 'categories_controller.erb', "app/controllers/#{file_name}_controller.rb"
12
+ end
13
+
14
+ private
15
+ def capitalized_class_name
16
+ class_name.capitalize
17
+ end
18
+
19
+ def camelcased_class_name
20
+ class_name.camelcase
21
+ end
22
+
23
+ def camelcased_pluralized_class_name
24
+ camelcased_class_name.pluralize
25
+ end
26
+
27
+ def file_name
28
+ underscored_pluralized_class_name
29
+ end
30
+
31
+ def underscored_class_name
32
+ camelcased_class_name.underscore
33
+ end
34
+
35
+ def underscored_pluralized_class_name
36
+ underscored_class_name.pluralize
37
+ end
38
+
39
+ def news_class_name
40
+ news_class_name_arg.blank? ? camelcased_class_name.sub(/Category$/, "") : news_class_name_arg
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ require 'rails/generators'
2
+
3
+ module Enjoy::News::Controllers
4
+ class NewsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :class_name, type: :string
7
+ argument :category_class_name_arg, type: :string, default: ""
8
+
9
+ desc 'Enjoy::News News Controller generator'
10
+ def news
11
+ template 'news_controller.erb', "app/controllers/#{file_name}_controller.rb"
12
+ end
13
+
14
+ private
15
+ def capitalized_class_name
16
+ class_name.capitalize
17
+ end
18
+
19
+ def camelcased_class_name
20
+ class_name.camelcase
21
+ end
22
+
23
+ def camelcased_pluralized_class_name
24
+ camelcased_class_name.pluralize
25
+ end
26
+
27
+ def file_name
28
+ underscored_pluralized_class_name
29
+ end
30
+
31
+ def underscored_class_name
32
+ camelcased_class_name.underscore
33
+ end
34
+
35
+ def underscored_pluralized_class_name
36
+ underscored_class_name.pluralize
37
+ end
38
+
39
+ def category_class_name
40
+ category_class_name_arg.blank? ? "#{camelcased_class_name}Category" : category_class_name_arg
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,10 @@
1
+ class <%= camelcased_pluralized_class_name %>Controller < Enjoy::News::CategoriesController
2
+
3
+ private
4
+ def category_class
5
+ <%= camelcased_class_name %>
6
+ end
7
+ def news_class
8
+ <%= item_class_name %>
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ class <%= camelcased_pluralized_class_name %>Controller < Enjoy::News::NewsController
2
+
3
+ private
4
+ def category_class
5
+ <%= category_class_name %>
6
+ end
7
+ def news_class
8
+ <%= camelcased_class_name %>
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/active_record'
3
+
4
+ module Enjoy::News::Migrations
5
+ class InstallGenerator < Rails::Generators::Base
6
+ include ActiveRecord::Generators::Migration
7
+ source_root File.expand_path('../templates', __FILE__)
8
+
9
+ desc 'Enjoy::News migration generator'
10
+ def install
11
+ if Enjoy::News.active_record?
12
+ %w(news).each do |table_name|
13
+ migration_template "migration_#{table_name}.rb", "db/migrate/enjoy_news_create_#{table_name}.rb"
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,92 @@
1
+ class EnjoyNewsCreateNews < ActiveRecord::Migration
2
+ def change
3
+ ########### news #################
4
+ create_table :enjoy_news_news do |t|
5
+ t.boolean :enabled, default: true, null: false
6
+ t.timestamp :time, null: false
7
+
8
+ if Enjoy::News.config.localize
9
+ t.column :name_translations, 'hstore', default: {}
10
+ t.column :excerpt_html_translations, 'hstore', default: {}
11
+ t.column :excerpt_clear_translations, 'hstore', default: {}
12
+ t.column :content_html_translations, 'hstore', default: {}
13
+ t.column :content_clear_translations, 'hstore', default: {}
14
+ else
15
+ t.string :name, null: false
16
+ t.text :excerpt_html
17
+ t.boolean :excerpt_clear, default: true, null: false
18
+ t.text :content_html
19
+ t.boolean :content_clear, default: true, null: false
20
+ end
21
+
22
+ t.string :slug, null: false
23
+ t.attachment :image
24
+ t.timestamps
25
+ end
26
+
27
+ add_index :enjoy_news_news, :slug, unique: true
28
+ add_index :enjoy_news_news, [:enabled, :time]
29
+
30
+
31
+
32
+ ######### news images ################
33
+ # create_table :enjoy_news_news_images do |t|
34
+ # t.boolean :enabled, default: true, null: false
35
+ # t.integer :enjoy_news_news_id
36
+ #
37
+ # if Enjoy::News.config.localize
38
+ # t.column :name_translations, 'hstore', default: {}
39
+ # else
40
+ # t.string :name, null: false
41
+ # end
42
+ #
43
+ # t.attachment :image
44
+ # t.timestamps
45
+ # end
46
+ #
47
+ # add_index :enjoy_news_news_images, [:enabled, :enjoy_news_news_id]
48
+
49
+
50
+
51
+
52
+ ########### news_categories #################
53
+ create_table :enjoy_news_categories do |t|
54
+ t.boolean :enabled, default: true, null: false
55
+
56
+ if Enjoy::News.config.localize
57
+ t.column :name_translations, 'hstore', default: {}
58
+ t.column :excerpt_html_translations, 'hstore', default: {}
59
+ t.column :excerpt_clear_translations, 'hstore', default: {}
60
+ t.column :content_html_translations, 'hstore', default: {}
61
+ t.column :content_clear_translations, 'hstore', default: {}
62
+ else
63
+ t.string :name, null: false
64
+ t.text :excerpt_html
65
+ t.boolean :excerpt_clear, default: true, null: false
66
+ t.text :content_html
67
+ t.boolean :content_clear, default: true, null: false
68
+ end
69
+
70
+ t.integer :parent_id
71
+ t.integer :lft
72
+ t.integer :rgt
73
+ t.integer :depth
74
+
75
+ t.string :slug, null: false
76
+ t.attachment :image
77
+ t.timestamps
78
+ end
79
+
80
+ add_index :enjoy_news_categories, :slug, unique: true
81
+ add_index :enjoy_news_categories, [:enabled, :lft]
82
+
83
+
84
+
85
+ ######### news <-> news_category join table #############
86
+
87
+ create_join_table :enjoy_news_news, :enjoy_news_categories, table_name: :enjoy_news_news_categories
88
+
89
+ add_foreign_key(:enjoy_news_news_categories, :enjoy_news_news, dependent: :delete)
90
+ add_foreign_key(:enjoy_news_news_categories, :enjoy_news_categories, dependent: :delete)
91
+ end
92
+ end
@@ -0,0 +1,33 @@
1
+ require 'rails/generators'
2
+
3
+ module Enjoy::News::Models
4
+ class AllGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :class_name, type: :string
7
+ argument :category_class_name_arg, type: :string, default: ""
8
+ argument :image_class_name_arg, type: :string, default: ""
9
+
10
+ desc 'Enjoy::News Models generator'
11
+ def all
12
+ generate "enjoy:news:models:news #{camelcased_class_name}"
13
+ generate "enjoy:news:models:category #{category_class_name}"
14
+ generate "enjoy:news:models:news_image #{image_class_name}"
15
+ end
16
+
17
+ private
18
+ def capitalized_class_name
19
+ class_name.capitalize
20
+ end
21
+ def camelcased_class_name
22
+ class_name.camelcase
23
+ end
24
+
25
+ def category_class_name
26
+ category_class_name_arg.blank? ? "#{camelcased_class_name}Category" : category_class_name_arg
27
+ end
28
+ def image_class_name
29
+ image_class_name_arg.blank? ? "#{camelcased_class_name}Image" : image_class_name_arg
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ require 'rails/generators'
2
+
3
+ module Enjoy::News::Models
4
+ class CategoryGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :class_name, type: :string
7
+ argument :news_class_name_arg, type: :string, default: ""
8
+
9
+ desc 'Enjoy::News Category Model generator'
10
+ def category
11
+ template 'category.erb', "app/models/#{file_name}.rb"
12
+ end
13
+
14
+ private
15
+ def capitalized_class_name
16
+ class_name.capitalize
17
+ end
18
+
19
+ def camelcased_class_name
20
+ class_name.camelcase
21
+ end
22
+
23
+ def file_name
24
+ underscored_class_name
25
+ end
26
+
27
+ def underscored_class_name
28
+ camelcased_class_name.underscore
29
+ end
30
+
31
+ def underscored_pluralized_class_name
32
+ underscored_class_name.pluralize
33
+ end
34
+
35
+ def news_class_name
36
+ news_class_name_arg.blank? ? camelcased_class_name.sub(/Category$/, "") : news_class_name_arg
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ require 'rails/generators'
2
+
3
+ module Enjoy::News::Models
4
+ class ImageGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :class_name, type: :string
7
+ argument :item_class_name_arg, type: :string, default: ""
8
+
9
+ desc 'Enjoy::News Image Model generator'
10
+ def image
11
+ template 'image.erb', "app/models/#{file_name}.rb"
12
+ end
13
+
14
+ private
15
+ def capitalized_class_name
16
+ class_name.capitalize
17
+ end
18
+
19
+ def camelcased_class_name
20
+ class_name.camelcase
21
+ end
22
+
23
+ def file_name
24
+ underscored_class_name
25
+ end
26
+
27
+ def underscored_class_name
28
+ camelcased_class_name.underscore
29
+ end
30
+
31
+ def underscored_pluralized_class_name
32
+ underscored_class_name.pluralize
33
+ end
34
+
35
+ def item_class_name
36
+ item_class_name_arg.blank? ? camelcased_class_name.sub(/Image$/, "") : item_class_name_arg
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,34 @@
1
+ require 'rails/generators'
2
+
3
+ module Enjoy::News::Models
4
+ class NewsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :class_name, type: :string
7
+
8
+ desc 'Enjoy::News News Model generator'
9
+ def news
10
+ template 'news.erb', "app/models/#{file_name}.rb"
11
+ end
12
+
13
+ private
14
+ def capitalized_class_name
15
+ class_name.capitalize
16
+ end
17
+
18
+ def camelcased_class_name
19
+ class_name.camelcase
20
+ end
21
+
22
+ def file_name
23
+ underscored_class_name
24
+ end
25
+
26
+ def underscored_class_name
27
+ camelcased_class_name.underscore
28
+ end
29
+
30
+ def underscored_pluralized_class_name
31
+ underscored_class_name.pluralize
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ class <%= camelcased_class_name %> < Enjoy::News::Category
2
+
3
+ def image_styles
4
+ {}
5
+ end
6
+
7
+ def image_jcrop_options
8
+ {}
9
+ end
10
+
11
+ def news_class
12
+ <%= mews_class_name %>
13
+ end
14
+ def routes_namespace
15
+ :main_app # or nil
16
+ end
17
+
18
+
19
+ ############# rails_admin ##############
20
+ def self.rails_admin_add_fields
21
+ {}
22
+ end
23
+
24
+ def self.rails_admin_add_config(config)
25
+ end
26
+
27
+ rails_admin(&Enjoy::News::Admin::Category.config(rails_admin_add_fields) { |config|
28
+ rails_admin_add_config(config)
29
+ })
30
+ end
@@ -0,0 +1,30 @@
1
+ class <%= camelcased_class_name %> < Enjoy::News::Image
2
+ embedded_in :news, class_name: "<%= camelcased_news_class_name %>"
3
+ alias :<%= underscored_class_name %> :news
4
+
5
+ def self.find(id)
6
+ find_through(<%= camelcased_news_class_name %>, 'images', id)
7
+ end
8
+
9
+ def image_styles
10
+ {}
11
+ end
12
+
13
+ def image_jcrop_options
14
+ {}
15
+ end
16
+
17
+
18
+ ############# rails_admin ##############
19
+ def self.rails_admin_add_fields
20
+ {}
21
+ end
22
+
23
+ def self.rails_admin_add_config(config)
24
+ end
25
+
26
+ rails_admin(&Enjoy::News::Admin::Image.config(nil, rails_admin_add_fields) { |config|
27
+ rails_admin_add_config(config)
28
+ })
29
+
30
+ end
@@ -0,0 +1,38 @@
1
+ class <%= camelcased_class_name %> < Enjoy::Catalog::Item
2
+
3
+ has_and_belongs_to_many :categories, class_name: "<%= camelcased_class_name %>Category", inverse_of: nil
4
+ alias :<%= underscored_class_name %>_categories :categories
5
+
6
+ embeds_many :item_images, cascade_callbacks: true, class_name: "<%= camelcased_class_name %>Image"
7
+ alias :<%= underscored_class_name %>_images :item_images
8
+ accepts_nested_attributes_for :item_images, allow_destroy: true
9
+
10
+ has_and_belongs_to_many :related_items, :class_name => "<%= camelcased_class_name %>", :inverse_of => :related_items
11
+ alias :related_<%= underscored_pluralized_class_name %> :related_items
12
+
13
+ def image_styles
14
+ {}
15
+ end
16
+
17
+ def image_jcrop_options
18
+ {}
19
+ end
20
+
21
+
22
+ def routes_namespace
23
+ :main_app # or nil
24
+ end
25
+
26
+
27
+ ############# rails_admin ##############
28
+ def self.rails_admin_add_fields
29
+ {}
30
+ end
31
+
32
+ def self.rails_admin_add_config(config)
33
+ end
34
+
35
+ rails_admin(&Enjoy::Catalog::Admin::Item.config(rails_admin_add_fields) { |config|
36
+ rails_admin_add_config(config)
37
+ })
38
+ 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