enjoy_cms_news 0.4.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +1 -0
- data/app/assets/javascripts/enjoy_cms_news.coffee +0 -0
- data/app/assets/stylesheets/enjoy_cms_news.sass +0 -0
- data/app/controllers/concerns/enjoy/news/decorators/categories.rb +5 -0
- data/app/controllers/concerns/enjoy/news/decorators/news_controller.rb +5 -0
- data/app/controllers/enjoy/news/categories_controller.rb +7 -0
- data/app/controllers/enjoy/news/news_controller.rb +7 -0
- data/app/models/concerns/enjoy/news/decorators/category.rb +5 -0
- data/app/models/concerns/enjoy/news/decorators/image.rb +5 -0
- data/app/models/concerns/enjoy/news/decorators/news.rb +5 -0
- data/app/models/enjoy/news/category.rb +11 -0
- data/app/models/enjoy/news/image.rb +16 -0
- data/app/models/enjoy/news/news.rb +16 -0
- data/app/views/enjoy/news/news/_list.html.slim +6 -0
- data/app/views/enjoy/news/news/index.html.slim +4 -0
- data/app/views/enjoy/news/news/show.html.slim +8 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/config/initializers/enjoy_news.rb +72 -0
- data/config/locales/enjoy.news.ru.yml +13 -0
- data/enjoy_cms_news.gemspec +38 -0
- data/lib/enjoy/news/admin/category.rb +143 -0
- data/lib/enjoy/news/admin/image.rb +31 -0
- data/lib/enjoy/news/admin/news.rb +101 -0
- data/lib/enjoy/news/admin.rb +6 -0
- data/lib/enjoy/news/configuration.rb +61 -0
- data/lib/enjoy/news/controllers/categories.rb +72 -0
- data/lib/enjoy/news/controllers/news.rb +39 -0
- data/lib/enjoy/news/engine.rb +7 -0
- data/lib/enjoy/news/models/active_record/category.rb +25 -0
- data/lib/enjoy/news/models/active_record/image.rb +16 -0
- data/lib/enjoy/news/models/active_record/news.rb +29 -0
- data/lib/enjoy/news/models/category.rb +62 -0
- data/lib/enjoy/news/models/image.rb +20 -0
- data/lib/enjoy/news/models/mongoid/category.rb +28 -0
- data/lib/enjoy/news/models/mongoid/image.rb +22 -0
- data/lib/enjoy/news/models/mongoid/news.rb +39 -0
- data/lib/enjoy/news/models/news.rb +57 -0
- data/lib/enjoy/news/routes.rb +56 -0
- data/lib/enjoy/news/version.rb +5 -0
- data/lib/enjoy_cms_news.rb +69 -0
- data/lib/generators/enjoy/news/all_generator.rb +17 -0
- data/lib/generators/enjoy/news/config/install_generator.rb +13 -0
- data/lib/generators/enjoy/news/config/templates/enjoy_news.erb +28 -0
- data/lib/generators/enjoy/news/controllers/all_generator.rb +28 -0
- data/lib/generators/enjoy/news/controllers/category_generator.rb +43 -0
- data/lib/generators/enjoy/news/controllers/news_generator.rb +43 -0
- data/lib/generators/enjoy/news/controllers/templates/categories_controller.erb +10 -0
- data/lib/generators/enjoy/news/controllers/templates/news_controller.erb +10 -0
- data/lib/generators/enjoy/news/migrations/migration_generator.rb +18 -0
- data/lib/generators/enjoy/news/migrations/templates/news.rb +92 -0
- data/lib/generators/enjoy/news/models/all_generator.rb +33 -0
- data/lib/generators/enjoy/news/models/category_generator.rb +39 -0
- data/lib/generators/enjoy/news/models/image_generator.rb +39 -0
- data/lib/generators/enjoy/news/models/news_generator.rb +34 -0
- data/lib/generators/enjoy/news/models/templates/category.erb +30 -0
- data/lib/generators/enjoy/news/models/templates/image.erb +30 -0
- data/lib/generators/enjoy/news/models/templates/item.erb +38 -0
- data/release.sh +7 -0
- 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,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
|