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.
- 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
|