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.
Files changed (48) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +1 -1
  3. data/app/assets/javascripts/lato_blog/modules/BlogPosts.js +8 -0
  4. data/app/assets/stylesheets/lato_blog/pages/_posts.scss +1 -1
  5. data/app/controllers/lato_blog/api/categories_controller.rb +2 -2
  6. data/app/controllers/lato_blog/api/posts_controller.rb +4 -0
  7. data/app/controllers/lato_blog/api/tags_controller.rb +32 -0
  8. data/app/controllers/lato_blog/back/categories_controller.rb +1 -1
  9. data/app/controllers/lato_blog/back/posts_controller.rb +25 -0
  10. data/app/controllers/lato_blog/back/tags_controller.rb +137 -0
  11. data/app/models/lato_blog/post/serializer_helpers.rb +13 -1
  12. data/app/models/lato_blog/post.rb +5 -0
  13. data/app/models/lato_blog/tag/entity_helpers.rb +37 -0
  14. data/app/models/lato_blog/tag/serializer_helpers.rb +52 -0
  15. data/app/models/lato_blog/tag.rb +83 -0
  16. data/app/models/lato_blog/tag_parent.rb +9 -0
  17. data/app/models/lato_blog/tag_post.rb +31 -0
  18. data/app/views/lato_blog/back/categories/edit.html.erb +2 -0
  19. data/app/views/lato_blog/back/categories/index.html.erb +9 -3
  20. data/app/views/lato_blog/back/post_fields/create_relay_field.js.erb +1 -0
  21. data/app/views/lato_blog/back/post_fields/destroy_relay_field.js.erb +1 -0
  22. data/app/views/lato_blog/back/posts/edit.html.erb +4 -0
  23. data/app/views/lato_blog/back/posts/new.html.erb +2 -0
  24. data/app/views/lato_blog/back/posts/shared/edit/_edit_tags.html.erb +28 -0
  25. data/app/views/lato_blog/back/posts/shared/index/_index.html.erb +5 -5
  26. data/app/views/lato_blog/back/tags/edit.html.erb +44 -0
  27. data/app/views/lato_blog/back/tags/index.html.erb +24 -0
  28. data/app/views/lato_blog/back/tags/new.html.erb +40 -0
  29. data/app/views/lato_blog/back/tags/shared/_form.html.erb +34 -0
  30. data/app/views/lato_blog/back/tags/shared/edit/_edit_informations.html.erb +24 -0
  31. data/app/views/lato_blog/back/tags/shared/edit/_edit_languages.html.erb +38 -0
  32. data/app/views/lato_blog/back/tags/shared/new/_new_informations.html.erb +21 -0
  33. data/app/views/lato_blog/doc/doc/index.html.erb +1 -1
  34. data/config/configs.yml +5 -0
  35. data/config/languages/default.yml +11 -1
  36. data/config/languages/it.yml +10 -0
  37. data/config/routes/api.rb +4 -0
  38. data/config/routes/back.rb +5 -1
  39. data/db/migrate/20171020131140_create_lato_blog_tags.rb +15 -0
  40. data/db/migrate/20171021131140_create_lato_blog_tag_parents.rb +8 -0
  41. data/db/migrate/20171022131140_create_lato_blog_tag_posts.rb +10 -0
  42. data/lib/lato_blog/interface.rb +3 -3
  43. data/lib/lato_blog/interfaces/categories.rb +66 -0
  44. data/lib/lato_blog/interfaces/posts.rb +148 -0
  45. data/lib/lato_blog/interfaces/tags.rb +80 -0
  46. data/lib/lato_blog/version.rb +1 -1
  47. metadata +24 -6
  48. data/lib/lato_blog/interfaces/queries.rb +0 -161
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: aad2a0a2115db531a078ab05c7694142da5bb307
4
- data.tar.gz: dafd5bdb23bcdcb082965d2e81125c11c6ad3fc5
2
+ SHA256:
3
+ metadata.gz: c9bb80d2ed4130127c19c7cccb7b816b56383c058aade29c7a5559a5ab9404b2
4
+ data.tar.gz: ed30ea6b89d13aa5cd6ff7ea2a59b83a56446d19cec66b3cfd80f4a7ab08a860
5
5
  SHA512:
6
- metadata.gz: 3b055147664621e25759b0de18a9e293d72fd745086d2f24a0e869a78dfbfa6f2f625f69ca9e544f578e9df469e4c90ad176bb093d36280d15b5d71eb37721ca
7
- data.tar.gz: 416b158ff15f8cd5e9f29f1dd2d6bc5508f999fca232edc25fbc1a91365d4751c222eba70a3fcaace76710a244fb64a5040e01373424823721f668e930fd3c0f
6
+ metadata.gz: 33d6d80e98e5cd3e25abd2802132bce0f3703d22fc03d0ac7273888fa774bada18adb08aeff561fd150a70f8765dc9fe30bd3b6f41bc2ccf43deea3a79916444
7
+ data.tar.gz: e4e33e4bb1c86e26c7823f39ec12af1af6a9a2534d270c947a1dd3f39e4475484bb0029dd041ffdcfea5c105f9deb9d25af230ba68ecfc9e5e15d8650de58f75
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2017 Gregorio
1
+ Copyright 2017 Ideo SRL
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -24,6 +24,13 @@ var BlogPosts = (function () {
24
24
  })
25
25
  }
26
26
 
27
+ function _initializeTagsAutosave () {
28
+ var form = $('.posts__edit-tags').find('form')
29
+ $(form).find('select').change(function () {
30
+ $(form).submit()
31
+ })
32
+ }
33
+
27
34
  function _initializePublicationDatetimeAutosave () {
28
35
  var form = $('.posts__edit-publication-datetime').find('form')
29
36
  $(form).find('input').change(function () {
@@ -50,6 +57,7 @@ var BlogPosts = (function () {
50
57
  function init () {
51
58
  _initializeAutosave()
52
59
  _initializeCategoriesAutosave()
60
+ _initializeTagsAutosave()
53
61
  _initializePublicationDatetimeAutosave()
54
62
  _initializeStatusSwitchAutosave()
55
63
  _initializeSeoDescriptionAutosave()
@@ -23,6 +23,6 @@
23
23
  }
24
24
 
25
25
  .elements-table__row td:last-child {
26
- min-width: 100px;
26
+ min-width: 155px;
27
27
  }
28
28
  }
@@ -6,8 +6,8 @@ module LatoBlog
6
6
  order: params[:order],
7
7
  language: params[:language],
8
8
  search: params[:search],
9
- page: params[:page],
10
- per_page: params[:per_page]
9
+ page: params[:page].to_i,
10
+ per_page: params[:per_page].to_i
11
11
  )
12
12
 
13
13
  # render response
@@ -9,6 +9,10 @@ module LatoBlog
9
9
  category_permalink_AND: params[:category_permalink_AND],
10
10
  category_id: params[:category_id],
11
11
  category_id_AND: params[:category_id_AND],
12
+ tag_permalink: params[:tag_permalink],
13
+ tag_permalink_AND: params[:tag_permalink_AND],
14
+ tag_id: params[:tag_id],
15
+ tag_id_AND: params[:tag_id_AND],
12
16
  search: params[:search],
13
17
  page: params[:page],
14
18
  per_page: params[:per_page]
@@ -0,0 +1,32 @@
1
+ module LatoBlog
2
+ class Api::TagsController < Api::ApiController
3
+
4
+ def index
5
+ result = blog__get_tags(
6
+ order: params[:order],
7
+ language: params[:language],
8
+ search: params[:search],
9
+ page: params[:page].to_i,
10
+ per_page: params[:per_page].to_i
11
+ )
12
+
13
+ # render response
14
+ core__send_request_success(result)
15
+ end
16
+
17
+ def show
18
+ # check parameters
19
+ core__send_request_fail('Uncorrect parameters') && return unless params[:id] || params[:permalink]
20
+
21
+ tag = blog__get_tag(
22
+ id: params[:id],
23
+ permalink: params[:permalink]
24
+ )
25
+
26
+ # render respnse
27
+ core__send_request_fail('Tag not found') && return unless tag
28
+ core__send_request_success(tag: tag)
29
+ end
30
+
31
+ end
32
+ end
@@ -99,7 +99,7 @@ module LatoBlog
99
99
  id: @category.id).map { |cat| { title: cat.title, value: cat.id } }
100
100
  end
101
101
 
102
- # This function checks the @post variable is present and redirect to index if it not exist.
102
+ # This function checks the @category variable is present and redirect to index if it not exist.
103
103
  def check_category_presence
104
104
  if !@category
105
105
  flash[:warning] = LANGUAGES[:lato_blog][:flashes][:category_not_found]
@@ -139,6 +139,30 @@ module LatoBlog
139
139
  end
140
140
  end
141
141
 
142
+ # This function updates the tags of a post.
143
+ def update_tags
144
+ @post = LatoBlog::Post.find_by(id: params[:id])
145
+ return unless check_post_presence
146
+
147
+ params_tags = params[:tags].map(&:to_i)
148
+ tag_posts = LatoBlog::TagPost.where(lato_blog_post_id: @post.id)
149
+
150
+ params_tags.each do |tag_id|
151
+ tag = LatoBlog::Tag.find_by(id: tag_id)
152
+ next if !tag || tag.meta_language != @post.meta_language
153
+
154
+ tag_post = tag_posts.find_by(lato_blog_tag_id: tag.id)
155
+ LatoBlog::TagPost.create(lato_blog_post_id: @post.id, lato_blog_tag_id: tag.id) unless tag_post
156
+ end
157
+
158
+ tag_ids = tag_posts.pluck(:lato_blog_tag_id)
159
+ tag_ids.each do |tag_id|
160
+ next if params_tags.include?(tag_id)
161
+ tag_post = tag_posts.find_by(lato_blog_tag_id: tag_id)
162
+ tag_post.destroy if tag_post
163
+ end
164
+ end
165
+
142
166
  # This function updates the seo description of a post.
143
167
  def update_seo_description
144
168
  @post = LatoBlog::Post.find_by(id: params[:id])
@@ -191,6 +215,7 @@ module LatoBlog
191
215
 
192
216
  def fetch_external_objects
193
217
  @categories = LatoBlog::Category.all.where(meta_language: cookies[:lato_blog__current_language])
218
+ @tags = LatoBlog::Tag.all.where(meta_language: cookies[:lato_blog__current_language])
194
219
  @medias = LatoMedia::Media.all
195
220
  end
196
221
 
@@ -0,0 +1,137 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LatoBlog
4
+
5
+ # Back::TagsController.
6
+ class Back::TagsController < Back::BackController
7
+
8
+ before_action do
9
+ core__set_menu_active_item('blog_articles')
10
+ end
11
+
12
+ # This function shows the list of possible tags.
13
+ def index
14
+ core__set_header_active_page_title(LANGUAGES[:lato_blog][:pages][:tags])
15
+ # find tags to show
16
+ @tags = LatoBlog::Tag.where(meta_language: cookies[:lato_blog__current_language]).order('title ASC')
17
+ @widget_index_tags = core__widgets_index(@tags, search: 'title', pagination: 10)
18
+ end
19
+
20
+ # This function shows a single tag. It create a redirect to the edit path.
21
+ def show
22
+ # use edit as default post show page
23
+ redirect_to lato_blog.edit_tag_path(params[:id])
24
+ end
25
+
26
+ # This function shows the view to create a new tag.
27
+ def new
28
+ core__set_header_active_page_title(LANGUAGES[:lato_blog][:pages][:tags_new])
29
+ @tag = LatoBlog::Tag.new
30
+
31
+ if params[:language]
32
+ set_current_language params[:language]
33
+ end
34
+
35
+ if params[:parent]
36
+ @tag_parent = LatoBlog::TagParent.find_by(id: params[:parent])
37
+ end
38
+ end
39
+
40
+ # This function creates a new tag.
41
+ def create
42
+ @tag = LatoBlog::Tag.new(new_tag_params)
43
+
44
+ if !@tag.save
45
+ flash[:danger] = @tag.errors.full_messages.to_sentence
46
+ redirect_to lato_blog.new_tag_path
47
+ return
48
+ end
49
+
50
+ flash[:success] = LANGUAGES[:lato_blog][:flashes][:tag_create_success]
51
+ redirect_to lato_blog.tag_path(@tag.id)
52
+ end
53
+
54
+ # This function show the view to edit a tag.
55
+ def edit
56
+ core__set_header_active_page_title(LANGUAGES[:lato_blog][:pages][:tags_edit])
57
+ @tag = LatoBlog::Tag.find_by(id: params[:id])
58
+ return unless check_tag_presence
59
+
60
+ if @tag.meta_language != cookies[:lato_blog__current_language]
61
+ set_current_language @tag.meta_language
62
+ end
63
+ end
64
+
65
+ # This function updates a tag.
66
+ def update
67
+ @tag = LatoBlog::Tag.find_by(id: params[:id])
68
+ return unless check_tag_presence
69
+
70
+ if !@tag.update(edit_tag_params)
71
+ flash[:danger] = @tag.errors.full_messages.to_sentence
72
+ redirect_to lato_blog.edit_tag_path(@tag.id)
73
+ return
74
+ end
75
+
76
+ flash[:success] = LANGUAGES[:lato_blog][:flashes][:tag_update_success]
77
+ redirect_to lato_blog.tag_path(@tag.id)
78
+ end
79
+
80
+ # This function destroyes a tag.
81
+ def destroy
82
+ @tag = LatoBlog::Tag.find_by(id: params[:id])
83
+ return unless check_tag_presence
84
+
85
+ if !@tag.destroy
86
+ flash[:danger] = @tag.tag_parent.errors.full_messages.to_sentence
87
+ redirect_to lato_blog.edit_tag_path(@tag.id)
88
+ return
89
+ end
90
+
91
+ flash[:success] = LANGUAGES[:lato_blog][:flashes][:tag_destroy_success]
92
+ redirect_to lato_blog.categories_path(status: 'deleted')
93
+ end
94
+
95
+ private
96
+
97
+ # This function checks the @tag variable is present and redirect to index if it not exist.
98
+ def check_tag_presence
99
+ if !@tag
100
+ flash[:warning] = LANGUAGES[:lato_blog][:flashes][:tag_not_found]
101
+ redirect_to lato_blog.tags_path
102
+ return false
103
+ end
104
+
105
+ return true
106
+ end
107
+
108
+ # Params helpers:
109
+
110
+ # This function generate params for a new tag.
111
+ def new_tag_params
112
+ # take params from front-end request
113
+ tag_params = params.require(:tag).permit(:title).to_h
114
+ # add current superuser id
115
+ tag_params[:lato_core_superuser_creator_id] = @core__current_superuser.id
116
+ # add post parent id
117
+ tag_params[:lato_blog_tag_parent_id] = (params[:parent] && !params[:parent].blank? ? params[:parent] : generate_tag_parent)
118
+ # add metadata
119
+ tag_params[:meta_language] = cookies[:lato_blog__current_language]
120
+ # return final post object
121
+ return tag_params
122
+ end
123
+
124
+ # This function generate params for a edit tag.
125
+ def edit_tag_params
126
+ params.require(:tag).permit(:title, :lato_blog_tag_id, :meta_permalink)
127
+ end
128
+
129
+ # This function generate and save a new tag parent and return the id.
130
+ def generate_tag_parent
131
+ tag_parent = LatoBlog::TagParent.create
132
+ return tag_parent.id
133
+ end
134
+
135
+ end
136
+
137
+ end
@@ -22,6 +22,9 @@ module LatoBlog
22
22
  # add categories informations
23
23
  serialized[:categories] = serialize_categories
24
24
 
25
+ # add tags informations
26
+ serialized[:tags] = serialize_tags
27
+
25
28
  # add post parent informations
26
29
  serialized[:other_informations] = serialize_other_informations
27
30
 
@@ -55,7 +58,7 @@ module LatoBlog
55
58
  serialized
56
59
  end
57
60
 
58
- # This function serializes the list of cateogories for the post.
61
+ # This function serializes the list of categories for the post.
59
62
  def serialize_categories
60
63
  serialized = {}
61
64
  categories.each do |category|
@@ -64,6 +67,15 @@ module LatoBlog
64
67
  serialized
65
68
  end
66
69
 
70
+ # This function serializes the list of tags for the post.
71
+ def serialize_tags
72
+ serialized = {}
73
+ tags.each do |tag|
74
+ serialized[tag.id] = tag.serialize_base
75
+ end
76
+ serialized
77
+ end
78
+
67
79
  # This function serializes other informations for the post.
68
80
  def serialize_other_informations
69
81
  serialized = {}
@@ -29,6 +29,11 @@ module LatoBlog
29
29
  dependent: :destroy
30
30
  has_many :categories, through: :category_relations
31
31
 
32
+ has_many :tag_relations, foreign_key: :lato_blog_post_id,
33
+ class_name: 'LatoBlog::TagPost',
34
+ dependent: :destroy
35
+ has_many :tags, through: :tag_relations
36
+
32
37
  # Scopes:
33
38
 
34
39
  scope :published, -> { where(meta_status: BLOG_POSTS_STATUS[:published]) }
@@ -0,0 +1,37 @@
1
+ module LatoBlog
2
+ module Tag::EntityHelpers
3
+
4
+ # This function return the pretty name of the language of the tag.
5
+ def get_pretty_language
6
+ CONFIGS[:lato_blog][:languages].values.each do |language|
7
+ return language[:title] if language[:identifier] === self.meta_language
8
+ end
9
+ end
10
+
11
+ # This function returns a pretty presentation of the creation date for the post.
12
+ def get_pretty_created_at
13
+ self.created_at.strftime('%d/%m/%Y - %H:%M')
14
+ end
15
+
16
+ # This function returns a pretty presentation of the update date for the post.
17
+ def get_pretty_updated_at
18
+ self.updated_at.strftime('%d/%m/%Y - %H:%M')
19
+ end
20
+
21
+ # This function returns the name of the superuser creator of the post.
22
+ def get_superuser_creator_name
23
+ self.superuser_creator ? self.superuser_creator.get_complete_name : 'Anonymous'
24
+ end
25
+
26
+ # This function the post translation for a specific language.
27
+ def get_translation_for_language language_identifier
28
+ self.tag_parent.tags.find_by(meta_language: language_identifier)
29
+ end
30
+
31
+ # This function return the number of posts of the tag.
32
+ def get_number_of_posts
33
+ self.posts.length
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,52 @@
1
+ module LatoBlog
2
+ module Tag::SerializerHelpers
3
+
4
+ # This function serializes a complete version of the tag.
5
+ def serialize
6
+ serialized = {}
7
+
8
+ # set basic info
9
+ serialized[:id] = id
10
+ serialized[:title] = title
11
+ serialized[:meta_language] = meta_language
12
+ serialized[:meta_permalink] = meta_permalink
13
+
14
+ # add tag parent informations
15
+ serialized[:other_informations] = serialize_other_informations
16
+
17
+ # return serialized post
18
+ serialized
19
+ end
20
+
21
+ # This function serializes a basic version of the tag.
22
+ def serialize_base
23
+ serialized = {}
24
+
25
+ # set basic info
26
+ serialized[:id] = id
27
+ serialized[:title] = title
28
+ serialized[:meta_language] = meta_language
29
+ serialized[:meta_permalink] = meta_permalink
30
+
31
+ # return serialized tag
32
+ serialized
33
+ end
34
+
35
+ private
36
+
37
+ def serialize_other_informations
38
+ serialized = {}
39
+
40
+ # set translations links
41
+ serialized[:translations] = {}
42
+ tag_parent.tags.each do |tag|
43
+ next if tag.id == id
44
+ serialized[:translations][tag.meta_language] = tag.serialize_base
45
+ end
46
+
47
+ # return serialzed informations
48
+ serialized
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,83 @@
1
+ module LatoBlog
2
+ class Tag < ApplicationRecord
3
+
4
+ include Tag::EntityHelpers
5
+ include Tag::SerializerHelpers
6
+
7
+ # Validations:
8
+
9
+ validates :title, presence: true, length: { maximum: 250 }
10
+
11
+ validates :meta_permalink, presence: true, uniqueness: true,
12
+ length: { maximum: 250 }
13
+ validates :meta_language, presence: true, length: { maximum: 250 },
14
+ inclusion: { in: ([nil] + BLOG_LANGUAGES_IDENTIFIER) }
15
+
16
+ # Relations:
17
+
18
+ belongs_to :tag_parent, foreign_key: :lato_blog_tag_parent_id,
19
+ class_name: 'LatoBlog::TagParent'
20
+
21
+ belongs_to :superuser_creator, foreign_key: :lato_core_superuser_creator_id,
22
+ class_name: 'LatoCore::Superuser'
23
+
24
+ has_many :post_relations, foreign_key: :lato_blog_tag_id,
25
+ class_name: 'LatoBlog::TagPost',
26
+ dependent: :destroy
27
+ has_many :posts, through: :post_relations
28
+
29
+ # Callbacks:
30
+
31
+ before_validation :check_meta_permalink, on: :create
32
+
33
+ before_save do
34
+ self.meta_permalink = meta_permalink.parameterize
35
+ meta_language.downcase!
36
+
37
+ check_lato_blog_tag_parent
38
+ end
39
+
40
+ after_destroy do
41
+ blog__clean_tag_parents
42
+ end
43
+
44
+ private
45
+
46
+ # This function check if current permalink is valid. If it is not valid it
47
+ # generate a new from the post title.
48
+ def check_meta_permalink
49
+ candidate = (self.meta_permalink ? self.meta_permalink : self.title.parameterize)
50
+ accepted = nil
51
+ counter = 0
52
+
53
+ while accepted.nil?
54
+ if LatoBlog::Tag.find_by(meta_permalink: candidate)
55
+ counter += 1
56
+ candidate = "#{candidate}-#{counter}"
57
+ else
58
+ accepted = candidate
59
+ end
60
+ end
61
+
62
+ self.meta_permalink = accepted
63
+ end
64
+
65
+ # This function check that the category parent exist and has not others tags for the same language.
66
+ def check_lato_blog_tag_parent
67
+ tag_parent = LatoBlog::TagParent.find_by(id: lato_blog_tag_parent_id)
68
+ if !tag_parent
69
+ errors.add('Tag parent', 'not exist for the tag')
70
+ throw :abort
71
+ return
72
+ end
73
+
74
+ same_language_tag = tag_parent.tags.find_by(meta_language: meta_language)
75
+ if same_language_tag && same_language_tag.id != id
76
+ errors.add('Tag parent', 'has another tag for the same language')
77
+ throw :abort
78
+ return
79
+ end
80
+ end
81
+
82
+ end
83
+ end
@@ -0,0 +1,9 @@
1
+ module LatoBlog
2
+ class TagParent < ApplicationRecord
3
+
4
+ # Relations:
5
+
6
+ has_many :tags, foreign_key: :lato_blog_tag_parent_id, class_name: 'LatoBlog::Tag', dependent: :destroy
7
+
8
+ end
9
+ end
@@ -0,0 +1,31 @@
1
+ module LatoBlog
2
+ class TagPost < ApplicationRecord
3
+
4
+ # Validations:
5
+
6
+ validates :lato_blog_tag_id, presence: true
7
+ validates :lato_blog_post_id, presence: true
8
+
9
+ # Relations:
10
+
11
+ belongs_to :tag, foreign_key: :lato_blog_tag_id, class_name: 'LatoBlog::Tag'
12
+
13
+ belongs_to :post, foreign_key: :lato_blog_post_id, class_name: 'LatoBlog::Post'
14
+
15
+ # Callbacks:
16
+
17
+ before_save do
18
+ check_relation_language
19
+ end
20
+
21
+ private
22
+
23
+ def check_relation_language
24
+ if self.tag.meta_language != self.post.meta_language
25
+ errors.add('Tag and Post', 'have not same language')
26
+ throw :abort
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -15,6 +15,8 @@
15
15
 
16
16
  <%=raw block.open %>
17
17
 
18
+ <%=raw cell(:elements, :title).new(label: @category.title, size: 4) %>
19
+
18
20
  <%= render 'lato_blog/back/categories/shared/form', url: lato_blog.category_path(@category.id), method: :put %>
19
21
 
20
22
  <%=raw block.close %>
@@ -8,9 +8,15 @@
8
8
 
9
9
  <%=raw block.open %>
10
10
 
11
- <%=raw cell(:widgets, :index).new(records: @widget_index_categories, index_url: lato_blog.categories_path,
12
- head: [LANGUAGES[:lato_blog][:forms][:title], LANGUAGES[:lato_blog][:forms][:language], LANGUAGES[:lato_blog][:forms][:category_father], LANGUAGES[:lato_blog][:mixed][:number_of_posts]],
13
- columns: ['title', 'get_pretty_language', 'get_category_father_title', 'get_number_of_posts'], actions: {show: true, new: true, delete: true}, search: true, pagination: true) %>
11
+ <%=raw cell(:widgets, :index).new(
12
+ records: @widget_index_categories,
13
+ index_url: lato_blog.categories_path,
14
+ head: [LANGUAGES[:lato_blog][:forms][:title], LANGUAGES[:lato_blog][:forms][:language], LANGUAGES[:lato_blog][:forms][:category_father], LANGUAGES[:lato_blog][:mixed][:number_of_posts]],
15
+ columns: ['title', 'get_pretty_language', 'get_category_father_title', 'get_number_of_posts'],
16
+ actions: {show: true, new: true, delete: true},
17
+ search: true,
18
+ pagination: true
19
+ ) %>
14
20
 
15
21
  <%=raw block.close %>
16
22
 
@@ -10,6 +10,7 @@
10
10
  BlogFields.init()
11
11
  CoreDatepicker.init()
12
12
  CoreEditor.init()
13
+ CoreMediapicker.init()
13
14
  MediaPicker.init()
14
15
 
15
16
  <% end %>
@@ -10,6 +10,7 @@
10
10
  BlogFields.init()
11
11
  CoreDatepicker.init()
12
12
  CoreEditor.init()
13
+ CoreMediapicker.init()
13
14
  MediaPicker.init()
14
15
 
15
16
  <% end %>
@@ -15,6 +15,8 @@
15
15
 
16
16
  <%=raw block.open %>
17
17
 
18
+ <%=raw cell(:elements, :title).new(label: @post.title, size: 4) %>
19
+
18
20
  <%= render 'lato_blog/back/posts/shared/form', url: lato_blog.post_path(@post.id), method: :put %>
19
21
 
20
22
  <%=raw block.close %>
@@ -37,6 +39,8 @@
37
39
 
38
40
  <%= render 'lato_blog/back/posts/shared/edit/edit_pubblication_datetime' %>
39
41
 
42
+ <%= render 'lato_blog/back/posts/shared/edit/edit_tags' %>
43
+
40
44
  <%= render 'lato_blog/back/posts/shared/edit/edit_categories' %>
41
45
 
42
46
  <%= render 'lato_blog/back/posts/shared/edit/edit_seo_description' %>
@@ -15,6 +15,8 @@
15
15
 
16
16
  <%=raw block.open %>
17
17
 
18
+ <%=raw cell(:elements, :title).new(label: LANGUAGES[:lato_blog][:mixed][:create_new_post], size: 4) %>
19
+
18
20
  <%= render 'lato_blog/back/posts/shared/form', url: lato_blog.posts_path, method: :post %>
19
21
 
20
22
  <%=raw block.close %>
@@ -0,0 +1,28 @@
1
+ <%
2
+ block = cell(:elements, :block).new(class: 'xs-12 sm-12 md-12 posts__edit-tags')
3
+ row = cell(:elements, :row).new
4
+ form = cell(:inputs, :form).new(url: lato_blog.posts_update_tags_path, method: :post, remote: true)
5
+ %>
6
+
7
+ <%=raw block.open %>
8
+
9
+ <%=raw cell(:elements, :title).new(label: LANGUAGES[:lato_blog][:mixed][:tags], size: 6) %>
10
+
11
+ <%=raw form.open %>
12
+
13
+ <input type="hidden" name="id" value="<%= @post.id %>">
14
+
15
+ <%=raw row.open %>
16
+
17
+ <%=raw cell(:inputs, :select).new(
18
+ name: 'tags[]',
19
+ options: @tags.map { |t| {value: t.id, name: t.title} },
20
+ multiple: true,
21
+ value: @post.tags.pluck(:id)
22
+ ) %>
23
+
24
+ <%=raw row.close %>
25
+
26
+ <%=raw form.close %>
27
+
28
+ <%=raw block.close %>