lato_blog 2.1.2 → 2.2.0
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 +5 -5
- data/MIT-LICENSE +1 -1
- data/app/assets/javascripts/lato_blog/modules/BlogPosts.js +8 -0
- data/app/assets/stylesheets/lato_blog/pages/_posts.scss +1 -1
- data/app/controllers/lato_blog/api/categories_controller.rb +2 -2
- data/app/controllers/lato_blog/api/posts_controller.rb +4 -0
- data/app/controllers/lato_blog/api/tags_controller.rb +32 -0
- data/app/controllers/lato_blog/back/categories_controller.rb +1 -1
- data/app/controllers/lato_blog/back/posts_controller.rb +25 -0
- data/app/controllers/lato_blog/back/tags_controller.rb +137 -0
- data/app/models/lato_blog/post/serializer_helpers.rb +13 -1
- data/app/models/lato_blog/post.rb +5 -0
- data/app/models/lato_blog/tag/entity_helpers.rb +37 -0
- data/app/models/lato_blog/tag/serializer_helpers.rb +52 -0
- data/app/models/lato_blog/tag.rb +83 -0
- data/app/models/lato_blog/tag_parent.rb +9 -0
- data/app/models/lato_blog/tag_post.rb +31 -0
- data/app/views/lato_blog/back/categories/edit.html.erb +2 -0
- data/app/views/lato_blog/back/categories/index.html.erb +9 -3
- data/app/views/lato_blog/back/post_fields/create_relay_field.js.erb +1 -0
- data/app/views/lato_blog/back/post_fields/destroy_relay_field.js.erb +1 -0
- data/app/views/lato_blog/back/posts/edit.html.erb +4 -0
- data/app/views/lato_blog/back/posts/new.html.erb +2 -0
- data/app/views/lato_blog/back/posts/shared/edit/_edit_tags.html.erb +28 -0
- data/app/views/lato_blog/back/posts/shared/index/_index.html.erb +5 -5
- data/app/views/lato_blog/back/tags/edit.html.erb +44 -0
- data/app/views/lato_blog/back/tags/index.html.erb +24 -0
- data/app/views/lato_blog/back/tags/new.html.erb +40 -0
- data/app/views/lato_blog/back/tags/shared/_form.html.erb +34 -0
- data/app/views/lato_blog/back/tags/shared/edit/_edit_informations.html.erb +24 -0
- data/app/views/lato_blog/back/tags/shared/edit/_edit_languages.html.erb +38 -0
- data/app/views/lato_blog/back/tags/shared/new/_new_informations.html.erb +21 -0
- data/app/views/lato_blog/doc/doc/index.html.erb +1 -1
- data/config/configs.yml +5 -0
- data/config/languages/default.yml +11 -1
- data/config/languages/it.yml +10 -0
- data/config/routes/api.rb +4 -0
- data/config/routes/back.rb +5 -1
- data/db/migrate/20171020131140_create_lato_blog_tags.rb +15 -0
- data/db/migrate/20171021131140_create_lato_blog_tag_parents.rb +8 -0
- data/db/migrate/20171022131140_create_lato_blog_tag_posts.rb +10 -0
- data/lib/lato_blog/interface.rb +3 -3
- data/lib/lato_blog/interfaces/categories.rb +66 -0
- data/lib/lato_blog/interfaces/posts.rb +148 -0
- data/lib/lato_blog/interfaces/tags.rb +80 -0
- data/lib/lato_blog/version.rb +1 -1
- metadata +24 -6
- data/lib/lato_blog/interfaces/queries.rb +0 -161
@@ -0,0 +1,80 @@
|
|
1
|
+
module LatoBlog
|
2
|
+
|
3
|
+
# This module contains a list of functions used to manage tags for the blog.
|
4
|
+
module Interface::Tags
|
5
|
+
|
6
|
+
# This function cleans all old tag parents without any child.
|
7
|
+
def blog__clean_tag_parents
|
8
|
+
tag_parents = LatoBlog::TagParent.all
|
9
|
+
tag_parents.map { |tp| tp.destroy if tp.tags.empty? }
|
10
|
+
end
|
11
|
+
|
12
|
+
# This function returns an object with the list of tags with some filters.
|
13
|
+
def blog__get_tags(
|
14
|
+
order: nil,
|
15
|
+
language: nil,
|
16
|
+
search: nil,
|
17
|
+
page: nil,
|
18
|
+
per_page: nil
|
19
|
+
)
|
20
|
+
tags = LatoBlog::Tag.all
|
21
|
+
|
22
|
+
# apply filters
|
23
|
+
order = order && order == 'ASC' ? 'ASC' : 'DESC'
|
24
|
+
tags = _tags_filter_by_order(tags, order)
|
25
|
+
tags = _tags_filter_by_language(tags, language)
|
26
|
+
tags = _tags_filter_search(tags, search)
|
27
|
+
|
28
|
+
# take tags uniqueness
|
29
|
+
tags = tags.uniq(&:id)
|
30
|
+
|
31
|
+
# save total tags
|
32
|
+
total = tags.length
|
33
|
+
|
34
|
+
# manage pagination
|
35
|
+
page = page&.to_i || 1
|
36
|
+
per_page = per_page&.to_i || 20
|
37
|
+
tags = core__paginate_array(tags, per_page, page)
|
38
|
+
|
39
|
+
# return result
|
40
|
+
{
|
41
|
+
tags: tags && !tags.empty? ? tags.map(&:serialize) : [],
|
42
|
+
page: page,
|
43
|
+
per_page: per_page,
|
44
|
+
order: order,
|
45
|
+
total: total
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
# This function returns a single category searched by id or permalink.
|
50
|
+
def blog__get_category(id: nil, permalink: nil)
|
51
|
+
return {} unless id || permalink
|
52
|
+
|
53
|
+
if id
|
54
|
+
category = LatoBlog::Category.find_by(id: id.to_i)
|
55
|
+
else
|
56
|
+
category = LatoBlog::Category.find_by(meta_permalink: permalink)
|
57
|
+
end
|
58
|
+
|
59
|
+
category.serialize
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def _tags_filter_by_order(tags, order)
|
65
|
+
tags.order("title #{order}")
|
66
|
+
end
|
67
|
+
|
68
|
+
def _tags_filter_by_language(tags, language)
|
69
|
+
return tags unless language
|
70
|
+
tags.where(meta_language: language)
|
71
|
+
end
|
72
|
+
|
73
|
+
def _tags_filter_search(tags, search)
|
74
|
+
return tags unless search
|
75
|
+
tags.where('title like ?', "%#{search}%")
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
data/lib/lato_blog/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lato_blog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ideonetwork
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.1.
|
47
|
+
version: 2.1.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.1.
|
54
|
+
version: 2.1.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,11 +101,13 @@ files:
|
|
101
101
|
- app/controllers/lato_blog/api/api_controller.rb
|
102
102
|
- app/controllers/lato_blog/api/categories_controller.rb
|
103
103
|
- app/controllers/lato_blog/api/posts_controller.rb
|
104
|
+
- app/controllers/lato_blog/api/tags_controller.rb
|
104
105
|
- app/controllers/lato_blog/application_controller.rb
|
105
106
|
- app/controllers/lato_blog/back/back_controller.rb
|
106
107
|
- app/controllers/lato_blog/back/categories_controller.rb
|
107
108
|
- app/controllers/lato_blog/back/post_fields_controller.rb
|
108
109
|
- app/controllers/lato_blog/back/posts_controller.rb
|
110
|
+
- app/controllers/lato_blog/back/tags_controller.rb
|
109
111
|
- app/controllers/lato_blog/doc/doc_controller.rb
|
110
112
|
- app/controllers/lato_blog/doc/fields_controller.rb
|
111
113
|
- app/controllers/lato_blog/doc/general_controller.rb
|
@@ -126,6 +128,11 @@ files:
|
|
126
128
|
- app/models/lato_blog/post_field/entity_helpers.rb
|
127
129
|
- app/models/lato_blog/post_field/serializer_helpers.rb
|
128
130
|
- app/models/lato_blog/post_parent.rb
|
131
|
+
- app/models/lato_blog/tag.rb
|
132
|
+
- app/models/lato_blog/tag/entity_helpers.rb
|
133
|
+
- app/models/lato_blog/tag/serializer_helpers.rb
|
134
|
+
- app/models/lato_blog/tag_parent.rb
|
135
|
+
- app/models/lato_blog/tag_post.rb
|
129
136
|
- app/views/lato_blog/back/back/switch_current_language.js
|
130
137
|
- app/views/lato_blog/back/categories/edit.html.erb
|
131
138
|
- app/views/lato_blog/back/categories/index.html.erb
|
@@ -159,10 +166,18 @@ files:
|
|
159
166
|
- app/views/lato_blog/back/posts/shared/edit/_edit_pubblication_datetime.html.erb
|
160
167
|
- app/views/lato_blog/back/posts/shared/edit/_edit_seo_description.html.erb
|
161
168
|
- app/views/lato_blog/back/posts/shared/edit/_edit_status.html.erb
|
169
|
+
- app/views/lato_blog/back/posts/shared/edit/_edit_tags.html.erb
|
162
170
|
- app/views/lato_blog/back/posts/shared/index/_index.html.erb
|
163
171
|
- app/views/lato_blog/back/posts/shared/index/_index_informations.html.erb
|
164
172
|
- app/views/lato_blog/back/posts/shared/index/_index_switch_status.html.erb
|
165
173
|
- app/views/lato_blog/back/posts/shared/new/_new_informations.html.erb
|
174
|
+
- app/views/lato_blog/back/tags/edit.html.erb
|
175
|
+
- app/views/lato_blog/back/tags/index.html.erb
|
176
|
+
- app/views/lato_blog/back/tags/new.html.erb
|
177
|
+
- app/views/lato_blog/back/tags/shared/_form.html.erb
|
178
|
+
- app/views/lato_blog/back/tags/shared/edit/_edit_informations.html.erb
|
179
|
+
- app/views/lato_blog/back/tags/shared/edit/_edit_languages.html.erb
|
180
|
+
- app/views/lato_blog/back/tags/shared/new/_new_informations.html.erb
|
166
181
|
- app/views/lato_blog/doc/doc/index.html.erb
|
167
182
|
- app/views/lato_blog/doc/fields/composed.html.erb
|
168
183
|
- app/views/lato_blog/doc/fields/datetime.html.erb
|
@@ -192,6 +207,9 @@ files:
|
|
192
207
|
- db/migrate/20170516063330_create_lato_blog_category_posts.rb
|
193
208
|
- db/migrate/20170516063330_create_lato_blog_post_fields.rb
|
194
209
|
- db/migrate/20170804131140_add_seo_description_to_lato_blog_posts.rb
|
210
|
+
- db/migrate/20171020131140_create_lato_blog_tags.rb
|
211
|
+
- db/migrate/20171021131140_create_lato_blog_tag_parents.rb
|
212
|
+
- db/migrate/20171022131140_create_lato_blog_tag_posts.rb
|
195
213
|
- lib/lato_blog.rb
|
196
214
|
- lib/lato_blog/engine.rb
|
197
215
|
- lib/lato_blog/interface.rb
|
@@ -199,7 +217,7 @@ files:
|
|
199
217
|
- lib/lato_blog/interfaces/fields.rb
|
200
218
|
- lib/lato_blog/interfaces/languages.rb
|
201
219
|
- lib/lato_blog/interfaces/posts.rb
|
202
|
-
- lib/lato_blog/interfaces/
|
220
|
+
- lib/lato_blog/interfaces/tags.rb
|
203
221
|
- lib/lato_blog/version.rb
|
204
222
|
- lib/tasks/lato_blog_tasks.rake
|
205
223
|
homepage: http://ideonetwork.it/
|
@@ -222,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
240
|
version: '0'
|
223
241
|
requirements: []
|
224
242
|
rubyforge_project:
|
225
|
-
rubygems_version: 2.
|
243
|
+
rubygems_version: 2.7.3
|
226
244
|
signing_key:
|
227
245
|
specification_version: 4
|
228
246
|
summary: Lato blog module
|
@@ -1,161 +0,0 @@
|
|
1
|
-
module LatoBlog
|
2
|
-
|
3
|
-
# This module contains a list of helpers used on controllers to get posts
|
4
|
-
# to render the blog elements.
|
5
|
-
module Interface::Queries
|
6
|
-
|
7
|
-
# This function returns an object with the list of posts with some filters.
|
8
|
-
def blog__get_posts(order: nil, language: nil, category_permalink: nil, category_permalink_AND: false, category_id: nil, category_id_AND: false, search: nil, page: nil, per_page: nil)
|
9
|
-
posts = LatoBlog::Post.published.joins(:categories).joins(:post_parent).where('lato_blog_post_parents.publication_datetime <= ?', DateTime.now)
|
10
|
-
|
11
|
-
# apply filters
|
12
|
-
order = order && order == 'ASC' ? 'ASC' : 'DESC'
|
13
|
-
posts = _posts_filter_by_order(posts, order)
|
14
|
-
posts = _posts_filter_by_language(posts, language)
|
15
|
-
posts = _posts_filter_by_category_permalink(posts, category_permalink, category_permalink_AND)
|
16
|
-
posts = _posts_filter_category_id(posts, category_id, category_id_AND)
|
17
|
-
posts = _posts_filter_search(posts, search)
|
18
|
-
|
19
|
-
# take posts uniqueness
|
20
|
-
posts = posts.uniq(&:id)
|
21
|
-
|
22
|
-
# save total posts
|
23
|
-
total = posts.length
|
24
|
-
|
25
|
-
# manage pagination
|
26
|
-
page ||= 1
|
27
|
-
per_page ||= 20
|
28
|
-
posts = core__paginate_array(posts, per_page, page)
|
29
|
-
|
30
|
-
# return result
|
31
|
-
{
|
32
|
-
posts: posts && !posts.empty? ? posts.map(&:serialize) : [],
|
33
|
-
page: page,
|
34
|
-
per_page: per_page,
|
35
|
-
order: order,
|
36
|
-
total: total
|
37
|
-
}
|
38
|
-
end
|
39
|
-
|
40
|
-
# This function returns a single post searched by id or permalink.
|
41
|
-
def blog__get_post(id: nil, permalink: nil)
|
42
|
-
return {} unless id || permalink
|
43
|
-
|
44
|
-
if id
|
45
|
-
post = LatoBlog::Post.find_by(id: id.to_i, meta_status: 'published')
|
46
|
-
else
|
47
|
-
post = LatoBlog::Post.find_by(meta_permalink: permalink, meta_status: 'published')
|
48
|
-
end
|
49
|
-
|
50
|
-
post.serialize
|
51
|
-
end
|
52
|
-
|
53
|
-
# This function returns an object with the list of categories with some filters.
|
54
|
-
def blog__get_categories(order: nil, language: nil, search: nil, page: nil, per_page: nil)
|
55
|
-
categories = LatoBlog::Category.all
|
56
|
-
|
57
|
-
# apply filters
|
58
|
-
order = order && order == 'ASC' ? 'ASC' : 'DESC'
|
59
|
-
categories = _categories_filter_by_order(categories, order)
|
60
|
-
categories = _categories_filter_by_language(categories, language)
|
61
|
-
categories = _categories_filter_search(categories, search)
|
62
|
-
|
63
|
-
# take categories uniqueness
|
64
|
-
categories = categories.uniq(&:id)
|
65
|
-
|
66
|
-
# save total categories
|
67
|
-
total = categories.length
|
68
|
-
|
69
|
-
# manage pagination
|
70
|
-
page ||= 1
|
71
|
-
per_page ||= 20
|
72
|
-
categories = core__paginate_array(categories, per_page, page)
|
73
|
-
|
74
|
-
# return result
|
75
|
-
{
|
76
|
-
categories: categories && !categories.empty? ? categories.map(&:serialize) : [],
|
77
|
-
page: page,
|
78
|
-
per_page: per_page,
|
79
|
-
order: order,
|
80
|
-
total: total
|
81
|
-
}
|
82
|
-
end
|
83
|
-
|
84
|
-
# This function returns a single category searched by id or permalink.
|
85
|
-
def blog__get_category(id: nil, permalink: nil)
|
86
|
-
return {} unless id || permalink
|
87
|
-
|
88
|
-
if id
|
89
|
-
category = LatoBlog::Category.find_by(id: id.to_i)
|
90
|
-
else
|
91
|
-
category = LatoBlog::Category.find_by(meta_permalink: permalink)
|
92
|
-
end
|
93
|
-
|
94
|
-
category.serialize
|
95
|
-
end
|
96
|
-
|
97
|
-
private
|
98
|
-
|
99
|
-
def _posts_filter_by_order(posts, order)
|
100
|
-
posts.order("lato_blog_post_parents.publication_datetime #{order}")
|
101
|
-
end
|
102
|
-
|
103
|
-
def _posts_filter_by_language(posts, language)
|
104
|
-
return posts unless language
|
105
|
-
posts.where(meta_language: language)
|
106
|
-
end
|
107
|
-
|
108
|
-
def _posts_filter_by_category_permalink(posts, category_permalink, category_permalink_AND)
|
109
|
-
return posts unless category_permalink
|
110
|
-
category_permalinks = category_permalink.is_a?(Array) ? category_permalink : category_permalink.split(',')
|
111
|
-
posts = posts.where(lato_blog_categories: { meta_permalink: category_permalinks })
|
112
|
-
# manage AND clause
|
113
|
-
if ['true', true].include?(category_permalink_AND)
|
114
|
-
ids = []
|
115
|
-
posts.pluck(:id).each do |id|
|
116
|
-
ids.push(id) if posts.where(id: id).length >= category_permalinks.length
|
117
|
-
end
|
118
|
-
posts = posts.where(id: ids)
|
119
|
-
end
|
120
|
-
# return posts
|
121
|
-
posts
|
122
|
-
end
|
123
|
-
|
124
|
-
def _posts_filter_category_id(posts, category_id, category_id_AND)
|
125
|
-
return posts unless category_id
|
126
|
-
category_ids = category_id.is_a?(Array) ? category_id : category_id.split(',')
|
127
|
-
posts = posts.where(lato_blog_categories: { id: category_ids })
|
128
|
-
# manage AND clause
|
129
|
-
if ['true', true].include?(category_id_AND)
|
130
|
-
ids = []
|
131
|
-
posts.pluck(:id).each do |id|
|
132
|
-
ids.push(id) if posts.where(id: id).length >= category_ids.length
|
133
|
-
end
|
134
|
-
posts = posts.where(id: ids)
|
135
|
-
end
|
136
|
-
# return posts
|
137
|
-
posts
|
138
|
-
end
|
139
|
-
|
140
|
-
def _posts_filter_search(posts, search)
|
141
|
-
return posts unless search
|
142
|
-
posts.where('lato_blog_posts.title like ?', "%#{params[:search]}%")
|
143
|
-
end
|
144
|
-
|
145
|
-
def _categories_filter_by_order(categories, order)
|
146
|
-
categories.order("title #{order}")
|
147
|
-
end
|
148
|
-
|
149
|
-
def _categories_filter_by_language(categories, language)
|
150
|
-
return categories unless language
|
151
|
-
categories.where(meta_language: language)
|
152
|
-
end
|
153
|
-
|
154
|
-
def _categories_filter_search(categories, search)
|
155
|
-
return categories unless search
|
156
|
-
categories.where('title like ?', "%#{search}%")
|
157
|
-
end
|
158
|
-
|
159
|
-
end
|
160
|
-
|
161
|
-
end
|