decidim-blogs 0.26.2 → 0.27.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/blogs/admin/create_post.rb +1 -1
  3. data/app/commands/decidim/blogs/admin/update_post.rb +6 -3
  4. data/app/controllers/decidim/blogs/admin/posts_controller.rb +6 -2
  5. data/app/forms/decidim/blogs/admin/post_form.rb +27 -7
  6. data/app/helpers/decidim/blogs/admin/posts_helper.rb +15 -0
  7. data/app/models/decidim/blogs/post.rb +9 -1
  8. data/app/presenters/decidim/blogs/admin_log/post_presenter.rb +36 -0
  9. data/app/presenters/decidim/blogs/official_author_presenter.rb +14 -0
  10. data/app/presenters/decidim/blogs/post_presenter.rb +7 -1
  11. data/app/views/decidim/blogs/admin/posts/_form.html.erb +3 -3
  12. data/app/views/decidim/blogs/posts/_posts.html.erb +2 -1
  13. data/app/views/decidim/blogs/posts/show.html.erb +3 -1
  14. data/config/locales/am-ET.yml +1 -0
  15. data/config/locales/ar.yml +2 -1
  16. data/config/locales/bg.yml +1 -0
  17. data/config/locales/ca.yml +8 -1
  18. data/config/locales/cs.yml +8 -1
  19. data/config/locales/da.yml +1 -0
  20. data/config/locales/de.yml +2 -1
  21. data/config/locales/el.yml +2 -1
  22. data/config/locales/en.yml +7 -1
  23. data/config/locales/eo.yml +1 -0
  24. data/config/locales/es-MX.yml +8 -1
  25. data/config/locales/es-PY.yml +8 -1
  26. data/config/locales/es.yml +8 -1
  27. data/config/locales/et.yml +1 -0
  28. data/config/locales/eu.yml +2 -1
  29. data/config/locales/fi-plain.yml +8 -1
  30. data/config/locales/fi.yml +8 -1
  31. data/config/locales/fr-CA.yml +2 -1
  32. data/config/locales/fr.yml +2 -1
  33. data/config/locales/ga-IE.yml +1 -0
  34. data/config/locales/gl.yml +2 -1
  35. data/config/locales/hr.yml +1 -0
  36. data/config/locales/hu.yml +1 -0
  37. data/config/locales/id-ID.yml +1 -0
  38. data/config/locales/is-IS.yml +2 -1
  39. data/config/locales/it.yml +2 -1
  40. data/config/locales/ja.yml +7 -1
  41. data/config/locales/ko.yml +1 -0
  42. data/config/locales/lb.yml +2 -1
  43. data/config/locales/lt.yml +1 -0
  44. data/config/locales/lv.yml +1 -0
  45. data/config/locales/mt.yml +1 -0
  46. data/config/locales/nl.yml +2 -1
  47. data/config/locales/no.yml +2 -1
  48. data/config/locales/om-ET.yml +1 -0
  49. data/config/locales/pl.yml +2 -1
  50. data/config/locales/pt-BR.yml +3 -2
  51. data/config/locales/pt.yml +2 -1
  52. data/config/locales/ro-RO.yml +2 -1
  53. data/config/locales/ru.yml +1 -0
  54. data/config/locales/si-LK.yml +1 -0
  55. data/config/locales/sk.yml +1 -0
  56. data/config/locales/sl.yml +1 -0
  57. data/config/locales/so-SO.yml +1 -0
  58. data/config/locales/sr-CS.yml +1 -0
  59. data/config/locales/sv.yml +3 -1
  60. data/config/locales/sw-KE.yml +1 -0
  61. data/config/locales/ti-ER.yml +1 -0
  62. data/config/locales/tr-TR.yml +1 -0
  63. data/config/locales/uk.yml +1 -0
  64. data/config/locales/val-ES.yml +1 -0
  65. data/config/locales/vi.yml +1 -0
  66. data/config/locales/zh-CN.yml +1 -0
  67. data/config/locales/zh-TW.yml +1 -0
  68. data/lib/decidim/blogs/component.rb +8 -2
  69. data/lib/decidim/blogs/version.rb +1 -1
  70. metadata +22 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b09fd77f2afed7d1e0c8c6e2d4a76d07e5e9487f96fa0618912dbdad63ec152e
4
- data.tar.gz: 0c2fe3a5dd93723960dae9487d67bf76dc49823d94ccc8ab64e872267d4b0eb8
3
+ metadata.gz: 88768c7f46aed92952e6f183bee4e4bab6fb48f8115a5153c4ae05fdbd35412e
4
+ data.tar.gz: 1dd3686bc2bf1aa6b5e11de03036cf074b18cae89899b4f2628f114cdb2cda07
5
5
  SHA512:
6
- metadata.gz: cf119b7dc3e6e366f51a402697882cccd0cf1afdf6957522724c61b52d7eb9981da7b3966fde57e9f8676f99034643be174c98d75f376ecc73fb31a17b3c69f4
7
- data.tar.gz: 443374c6f71405e9177bc2b31c0570cc114211ccfc1eae65901bffb4f699d08e5751b2750cec30cc9658ed9d3e393e94ca1a61af573713818f4d1944eebaf22b
6
+ metadata.gz: 7996256e0b234c48573fec40afb363224d8c22bdf6cee5eae3a7c3cfccb276124529aa304331226ad21412c7951d162708dfbd489b635df34b46ee8f6daf46ec
7
+ data.tar.gz: d9f1b715694ed3414c299cab3eb2b75018fd2fa37ed344cc672181b4156572a735438b8866aa8d4a46216d341fab71b73ffce57d85f893e647309af86f488af1
@@ -5,7 +5,7 @@ module Decidim
5
5
  module Admin
6
6
  # This command is executed when the user creates a Post from the admin
7
7
  # panel.
8
- class CreatePost < Rectify::Command
8
+ class CreatePost < Decidim::Command
9
9
  def initialize(form, current_user)
10
10
  @form = form
11
11
  @current_user = current_user
@@ -5,14 +5,15 @@ module Decidim
5
5
  module Admin
6
6
  # This command is executed when the user changes a Blog from the admin
7
7
  # panel.
8
- class UpdatePost < Rectify::Command
8
+ class UpdatePost < Decidim::Command
9
9
  # Initializes a UpdateBlog Command.
10
10
  #
11
11
  # form - The form from which to get the data.
12
12
  # blog - The current instance of the page to be updated.
13
- def initialize(form, post)
13
+ def initialize(form, post, user)
14
14
  @form = form
15
15
  @post = post
16
+ @user = user
16
17
  end
17
18
 
18
19
  # Updates the blog if valid.
@@ -33,7 +34,9 @@ module Decidim
33
34
  attr_reader :form, :post
34
35
 
35
36
  def update_post!
36
- post.update!(
37
+ Decidim.traceability.update!(
38
+ post,
39
+ @user,
37
40
  title: form.title,
38
41
  body: form.body,
39
42
  author: form.author
@@ -6,6 +6,7 @@ module Decidim
6
6
  # This controller allows the create or update a blog.
7
7
  class PostsController < Admin::ApplicationController
8
8
  helper UserGroupHelper
9
+ helper PostsHelper
9
10
 
10
11
  def new
11
12
  enforce_permission_to :create, :blogpost
@@ -38,7 +39,7 @@ module Decidim
38
39
  enforce_permission_to :update, :blogpost, blogpost: post
39
40
  @form = form(PostForm).from_params(params, current_component: current_component)
40
41
 
41
- UpdatePost.call(@form, post) do
42
+ UpdatePost.call(@form, post, current_user) do
42
43
  on(:ok) do
43
44
  flash[:notice] = I18n.t("posts.update.success", scope: "decidim.blogs.admin")
44
45
  redirect_to posts_path
@@ -53,7 +54,10 @@ module Decidim
53
54
 
54
55
  def destroy
55
56
  enforce_permission_to :destroy, :blogpost, blogpost: post
56
- post.destroy!
57
+
58
+ Decidim.traceability.perform_action!("delete", post, current_user) do
59
+ post.destroy!
60
+ end
57
61
 
58
62
  flash[:notice] = I18n.t("posts.destroy.success", scope: "decidim.blogs.admin")
59
63
 
@@ -10,24 +10,44 @@ module Decidim
10
10
  translatable_attribute :title, String
11
11
  translatable_attribute :body, String
12
12
 
13
- attribute :user_group_id, Integer
13
+ attribute :decidim_author_id, Integer
14
14
 
15
15
  validates :title, translatable_presence: true
16
16
  validates :body, translatable_presence: true
17
+ validate :can_set_author
17
18
 
18
- def map_model(post)
19
- self.user_group_id = post.author.id if post.author.is_a?(Decidim::UserGroup)
19
+ def map_model(model)
20
+ self.decidim_author_id = nil if model.author.is_a? Decidim::Organization
20
21
  end
21
22
 
22
- def user_group
23
- @user_group ||= Decidim::UserGroup.find_by(
23
+ def user_or_group
24
+ @user_or_group ||= Decidim::UserBaseEntity.find_by(
24
25
  organization: current_organization,
25
- id: user_group_id.to_i
26
+ id: decidim_author_id
26
27
  )
27
28
  end
28
29
 
29
30
  def author
30
- user_group || current_user
31
+ user_or_group || current_organization
32
+ end
33
+
34
+ private
35
+
36
+ def can_set_author
37
+ return if author == current_user.organization
38
+ return if author == current_user
39
+ return if user_groups.include? author
40
+ return if author == post&.author
41
+
42
+ errors.add(:decidim_author_id, :invalid)
43
+ end
44
+
45
+ def post
46
+ @post ||= Post.find_by(id: id)
47
+ end
48
+
49
+ def user_groups
50
+ @user_groups ||= Decidim::UserGroups::ManageableUserGroups.for(current_user).verified
31
51
  end
32
52
  end
33
53
  end
@@ -18,6 +18,21 @@ module Decidim
18
18
  body = translated_attribute(post.body)
19
19
  CGI.unescapeHTML html_truncate(body, max_length: max_length)
20
20
  end
21
+
22
+ def post_author_select_field(form, name, _options = {})
23
+ select_options = [
24
+ [current_organization.name, ""],
25
+ [current_user.name, current_user.id]
26
+ ]
27
+ current_user_groups = Decidim::UserGroups::ManageableUserGroups.for(current_user).verified
28
+
29
+ select_options += current_user_groups.map { |g| [g.name, g.id] } if current_organization.user_groups_enabled? && current_user_groups.any?
30
+ unless form.object.author.is_a?(Organization) || select_options.pluck(1).include?(form.object.author.id)
31
+ select_options << [form.object.author.name, form.object.author.id]
32
+ end
33
+
34
+ form.select(name, select_options)
35
+ end
21
36
  end
22
37
  end
23
38
  end
@@ -39,6 +39,10 @@ module Decidim
39
39
  participatory_space.try(:visible?) && component.try(:published?)
40
40
  end
41
41
 
42
+ def self.log_presenter_class_for(_log)
43
+ Decidim::Blogs::AdminLog::PostPresenter
44
+ end
45
+
42
46
  # Public: Overrides the `comments_have_alignment?` Commentable concern method.
43
47
  def comments_have_alignment?
44
48
  true
@@ -55,7 +59,11 @@ module Decidim
55
59
  end
56
60
 
57
61
  def official?
58
- author.nil?
62
+ author.is_a?(Decidim::Organization)
63
+ end
64
+
65
+ def user_group?
66
+ author.is_a?(Decidim::UserGroup)
59
67
  end
60
68
 
61
69
  def users_to_notify_on_comment_created
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Blogs
5
+ module AdminLog
6
+ # This class holds the logic to present a `Decidim::Blogs::Post`
7
+ # for the `AdminLog` log.
8
+ #
9
+ # Usage should be automatic and you shouldn't need to call this class
10
+ # directly, but here's an example:
11
+ #
12
+ # action_log = Decidim::ActionLog.last
13
+ # view_helpers # => this comes from the views
14
+ # PostPresenter.new(action_log, view_helpers).present
15
+ class PostPresenter < Decidim::Log::BasePresenter
16
+ private
17
+
18
+ def action_string
19
+ case action
20
+ when "create", "delete", "update"
21
+ "decidim.blogs.admin_log.post.#{action}"
22
+ else
23
+ super
24
+ end
25
+ end
26
+
27
+ def diff_fields_mapping
28
+ {
29
+ title: :i18n,
30
+ body: :i18n
31
+ }
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Blogs
5
+ #
6
+ # A dummy presenter to abstract out the author of an official post.
7
+ #
8
+ class OfficialAuthorPresenter < Decidim::OfficialAuthorPresenter
9
+ def name
10
+ I18n.t("decidim.blogs.models.post.fields.official_blog_post")
11
+ end
12
+ end
13
+ end
14
+ end
@@ -7,7 +7,13 @@ module Decidim
7
7
  #
8
8
  class PostPresenter < SimpleDelegator
9
9
  def author
10
- @author ||= Decidim::UserPresenter.new(super)
10
+ @author ||= if official?
11
+ Decidim::Blogs::OfficialAuthorPresenter.new
12
+ elsif user_group?
13
+ Decidim::UserGroupPresenter.new(super)
14
+ else
15
+ Decidim::UserPresenter.new(super)
16
+ end
11
17
  end
12
18
  end
13
19
  end
@@ -3,11 +3,11 @@
3
3
  <h2 class="card-title"><%= title %></h2>
4
4
  </div>
5
5
  <div class="card-section">
6
- <% if current_organization.user_groups_enabled? && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any? %>
6
+
7
7
  <div class="field">
8
- <%= user_group_select_field form, :user_group_id, label: t("decidim.blogs.actions.user_group_id") %>
8
+ <%= post_author_select_field form, :decidim_author_id, label: t("decidim.blogs.actions.author_id") %>
9
9
  </div>
10
- <% end %>
10
+
11
11
  <div class="row column">
12
12
  <%= form.translated :text_field, :title, autofocus: true %>
13
13
  </div>
@@ -12,7 +12,8 @@
12
12
  </h2>
13
13
  <% end %>
14
14
  <div class="card__author">
15
- <%= cell "decidim/author", present(post.author), from: post, has_actions: true %>
15
+ <% post_presenter = Decidim::Blogs::PostPresenter.new(post) %>
16
+ <%= cell "decidim/author", post_presenter.author, from: post, has_actions: true %>
16
17
  </div>
17
18
  </div>
18
19
  <%= decidim_sanitize_editor post_description(post) %>
@@ -23,7 +23,9 @@
23
23
  <% end %>
24
24
  </div>
25
25
  <h2 class="heading2"><%= translated_attribute post.title %></h2>
26
- <%= cell "decidim/author", present(post.author), from: post %>
26
+
27
+ <% post_presenter = Decidim::Blogs::PostPresenter.new(post) %>
28
+ <%= cell "decidim/author", post_presenter.author, from: post %>
27
29
  </div>
28
30
  <div class="row">
29
31
  <% if show_endorsements_card? %>
@@ -1 +1,2 @@
1
+ ---
1
2
  am:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  ar:
2
3
  activemodel:
3
4
  models:
@@ -14,12 +15,12 @@ ar:
14
15
  decidim:
15
16
  blogs:
16
17
  actions:
18
+ author_id: إنشاء مشاركة كـ
17
19
  confirm_destroy: هل أنت متأكد أنك تريد حذف هذه المشاركة؟
18
20
  destroy: حذف
19
21
  edit: تعديل
20
22
  new: منشور جديد
21
23
  title: أفعال
22
- user_group_id: إنشاء مشاركة كـ
23
24
  admin:
24
25
  models:
25
26
  components:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  bg:
2
3
  activemodel:
3
4
  models:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  ca:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ ca:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Crear publicació com
13
15
  confirm_destroy: Estàs segura que vols eliminar aquesta publicació?
14
16
  destroy: Suprimeix
15
17
  edit: Edita
16
18
  new: Nova publicació
17
19
  title: Accions
18
- user_group_id: Crear publicació com
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -39,6 +40,11 @@ ca:
39
40
  update:
40
41
  invalid: S'ha produït un error en guardar la publicació.
41
42
  success: S'ha desat la publicació correctament
43
+ admin_log:
44
+ post:
45
+ create: "%{user_name} ha creat el post %{resource_name} al blog de %{space_name}"
46
+ delete: "%{user_name} ha eliminat el post %{resource_name} del blog de %{space_name}"
47
+ update: "%{user_name} ha actualitzat el post %{resource_name} en el blog de %{space_name}"
42
48
  last_activity:
43
49
  new_post_at_html: "<span>Nova publicació a %{link}</span>"
44
50
  models:
@@ -47,6 +53,7 @@ ca:
47
53
  author: Autora
48
54
  body: Cos
49
55
  created_at: Creat el
56
+ official_blog_post: Post oficial
50
57
  title: títol
51
58
  posts:
52
59
  show:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  cs:
2
3
  activemodel:
3
4
  models:
@@ -12,12 +13,12 @@ cs:
12
13
  decidim:
13
14
  blogs:
14
15
  actions:
16
+ author_id: Vytvořit příspěvek jako
15
17
  confirm_destroy: Opravdu chcete tento příspěvek smazat?
16
18
  destroy: Smazat
17
19
  edit: Upravit
18
20
  new: Nový příspěvek
19
21
  title: Akce
20
- user_group_id: Vytvořit příspěvek jako
21
22
  admin:
22
23
  models:
23
24
  components:
@@ -41,6 +42,11 @@ cs:
41
42
  update:
42
43
  invalid: Při ukládání příspěvku došlo k chybám.
43
44
  success: Příspěvek byl úspěšně uložen
45
+ admin_log:
46
+ post:
47
+ create: "%{user_name} vytvořil příspěvek %{resource_name} v %{space_name}"
48
+ delete: "%{user_name} odstranil příspěvek %{resource_name} z %{space_name}"
49
+ update: "%{user_name} aktualizoval příspěvek %{resource_name} v %{space_name}"
44
50
  last_activity:
45
51
  new_post_at_html: "<span>Nový příspěvek v %{link}</span>"
46
52
  models:
@@ -49,6 +55,7 @@ cs:
49
55
  author: Autor
50
56
  body: Tělo
51
57
  created_at: Vytvořeno v
58
+ official_blog_post: Oficiální příspěvek
52
59
  title: titulek
53
60
  posts:
54
61
  show:
@@ -1 +1,2 @@
1
+ ---
1
2
  da:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  de:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ de:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Beitrag erstellen als
13
15
  confirm_destroy: Möchten Sie diesen Beitrag wirklich löschen?
14
16
  destroy: Löschen
15
17
  edit: Bearbeiten
16
18
  new: Neuer Beitrag
17
19
  title: Aktionen
18
- user_group_id: Beitrag erstellen als
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  el:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ el:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Δημιουργία ανάρτησης ως
13
15
  confirm_destroy: Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη δημοσίευση;
14
16
  destroy: Διαγραφή
15
17
  edit: Επεξεργασία
16
18
  new: Νέα δημοσίευση
17
19
  title: Ενέργειες
18
- user_group_id: Δημιουργία ανάρτησης ως
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -11,12 +11,12 @@ en:
11
11
  decidim:
12
12
  blogs:
13
13
  actions:
14
+ author_id: Create post as
14
15
  confirm_destroy: Are you sure you want to delete this post?
15
16
  destroy: Delete
16
17
  edit: Edit
17
18
  new: New post
18
19
  title: Actions
19
- user_group_id: Create post as
20
20
  admin:
21
21
  models:
22
22
  components:
@@ -40,6 +40,11 @@ en:
40
40
  update:
41
41
  invalid: There was a problem saving the post.
42
42
  success: Post successfully saved
43
+ admin_log:
44
+ post:
45
+ create: "%{user_name} created the %{resource_name} blog post in %{space_name}"
46
+ delete: "%{user_name} deleted the %{resource_name} blog post from %{space_name}"
47
+ update: "%{user_name} updated the %{resource_name} blog post in %{space_name}"
43
48
  last_activity:
44
49
  new_post_at_html: "<span>New post at %{link}</span>"
45
50
  models:
@@ -48,6 +53,7 @@ en:
48
53
  author: Author
49
54
  body: Body
50
55
  created_at: Created at
56
+ official_blog_post: Official post
51
57
  title: title
52
58
  posts:
53
59
  show:
@@ -1 +1,2 @@
1
+ ---
1
2
  eo:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  es-MX:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ es-MX:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Crear publicación como
13
15
  confirm_destroy: '¿Seguro que quieres eliminar esta publicación?'
14
16
  destroy: Borrar
15
17
  edit: Editar
16
18
  new: Nueva publicación
17
19
  title: Comportamiento
18
- user_group_id: Crear publicación como
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -39,6 +40,11 @@ es-MX:
39
40
  update:
40
41
  invalid: Ha habido errores al guardar la publicación.
41
42
  success: Publicación guardada con éxito
43
+ admin_log:
44
+ post:
45
+ create: "%{user_name} creó el post %{resource_name} en el blog de %{space_name}"
46
+ delete: "%{user_name} ha eliminado el post %{resource_name} en el blog de %{space_name}"
47
+ update: "%{user_name} ha actualizado el post %{resource_name} en el blog de %{space_name}"
42
48
  last_activity:
43
49
  new_post_at_html: "<span>Nueva publicación en %{link}</span>"
44
50
  models:
@@ -47,6 +53,7 @@ es-MX:
47
53
  author: Autoría
48
54
  body: Cuerpo
49
55
  created_at: Creado en
56
+ official_blog_post: Post oficial
50
57
  title: título
51
58
  posts:
52
59
  show:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  es-PY:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ es-PY:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Crear publicación como
13
15
  confirm_destroy: '¿Seguro que quieres eliminar esta publicación?'
14
16
  destroy: Borrar
15
17
  edit: Editar
16
18
  new: Nueva publicación
17
19
  title: Comportamiento
18
- user_group_id: Crear publicación como
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -39,6 +40,11 @@ es-PY:
39
40
  update:
40
41
  invalid: Ha habido errores al guardar la publicación.
41
42
  success: Publicación guardada con éxito
43
+ admin_log:
44
+ post:
45
+ create: "%{user_name} creó el post %{resource_name} en el blog de %{space_name}"
46
+ delete: "%{user_name} ha eliminado el post %{resource_name} en el blog de %{space_name}"
47
+ update: "%{user_name} ha actualizado el post %{resource_name} en el blog de %{space_name}"
42
48
  last_activity:
43
49
  new_post_at_html: "<span>Nueva publicación en %{link}</span>"
44
50
  models:
@@ -47,6 +53,7 @@ es-PY:
47
53
  author: Autoría
48
54
  body: Cuerpo
49
55
  created_at: Creado en
56
+ official_blog_post: Post oficial
50
57
  title: título
51
58
  posts:
52
59
  show:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  es:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ es:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Crear publicación como
13
15
  confirm_destroy: '¿Estás segura que quieres eliminar esta publicación?'
14
16
  destroy: Borrar
15
17
  edit: Editar
16
18
  new: Nueva publicación
17
19
  title: Acciones
18
- user_group_id: Crear publicación como
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -39,6 +40,11 @@ es:
39
40
  update:
40
41
  invalid: Se ha producido un error al guardar la publicación.
41
42
  success: Se ha guardado la publicación correctamente
43
+ admin_log:
44
+ post:
45
+ create: "%{user_name} creó el post %{resource_name} en el blog de %{space_name}"
46
+ delete: "%{user_name} ha eliminado el post %{resource_name} en el blog de %{space_name}"
47
+ update: "%{user_name} ha actualizado el post %{resource_name} en el blog de %{space_name}"
42
48
  last_activity:
43
49
  new_post_at_html: "<span>Nueva publicación en %{link}</span>"
44
50
  models:
@@ -47,6 +53,7 @@ es:
47
53
  author: Autora
48
54
  body: Cuerpo
49
55
  created_at: Creado en
56
+ official_blog_post: Post oficial
50
57
  title: título
51
58
  posts:
52
59
  show:
@@ -1 +1,2 @@
1
+ ---
1
2
  et:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  eu:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ eu:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Sortu argitalpena hau bezala
13
15
  confirm_destroy: Ziur mezua ezabatu nahi duzula?
14
16
  destroy: Ezabatu
15
17
  edit: Editatu
16
18
  new: Post berria
17
19
  title: Ekintzak
18
- user_group_id: Sortu argitalpena hau bezala
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  fi-pl:
2
3
  activemodel:
3
4
  models:
@@ -10,12 +11,12 @@ fi-pl:
10
11
  decidim:
11
12
  blogs:
12
13
  actions:
14
+ author_id: Luo artikkeli käyttäjänä
13
15
  confirm_destroy: Haluatko varmasti poistaa tämän artikkelin?
14
16
  destroy: Poista
15
17
  edit: Muokkaa
16
18
  new: Uusi artikkeli
17
19
  title: Toiminnot
18
- user_group_id: Luo artikkeli käyttäjänä
19
20
  admin:
20
21
  models:
21
22
  components:
@@ -39,6 +40,11 @@ fi-pl:
39
40
  update:
40
41
  invalid: Artikkelin tallennuksessa tapahtui virheitä.
41
42
  success: Artikkeli tallennettu onnistuneesti
43
+ admin_log:
44
+ post:
45
+ create: "%{user_name} loi blogikirjoituksen %{resource_name} tilassa %{space_name}"
46
+ delete: "%{user_name} poisti blogikirjoituksen %{resource_name} tilasta %{space_name}"
47
+ update: "%{user_name} päivitti blogikirjoitusta %{resource_name} tilassa %{space_name}"
42
48
  last_activity:
43
49
  new_post_at_html: "<span>Uusi artikkeli osoitteessa %{link}</span>"
44
50
  models:
@@ -47,6 +53,7 @@ fi-pl:
47
53
  author: Kirjoittaja
48
54
  body: Leipäteksti
49
55
  created_at: Luotu
56
+ official_blog_post: Virallinen artikkeli
50
57
  title: otsikko
51
58
  posts:
52
59
  show: