enjoy_cms_news 0.4.0.beta3

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