decidim-comments 0.19.0 → 0.22.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 +4 -4
- data/app/assets/javascripts/decidim/comments/bundle.js +41 -41
- data/app/assets/javascripts/decidim/comments/bundle.js.map +1 -1
- data/app/cells/decidim/comments/comment_activity_cell.rb +1 -1
- data/app/commands/decidim/comments/create_comment.rb +7 -7
- data/app/events/decidim/comments/comment_by_followed_user_group_event.rb +9 -0
- data/app/events/decidim/comments/comment_event.rb +15 -2
- data/app/events/decidim/comments/user_group_mentioned_event.rb +10 -0
- data/app/forms/decidim/comments/comment_form.rb +9 -0
- data/app/frontend/application/icon.component.tsx +16 -4
- data/app/frontend/comments/add_comment_form.component.test.tsx +4 -1
- data/app/frontend/comments/add_comment_form.component.tsx +16 -3
- data/app/frontend/comments/comment.component.test.tsx +1 -1
- data/app/frontend/comments/comment.component.tsx +287 -74
- data/app/frontend/comments/comment_order_selector.component.tsx +26 -7
- data/app/frontend/comments/comments.component.tsx +65 -8
- data/app/frontend/comments/down_vote_button.component.tsx +3 -0
- data/app/frontend/comments/up_vote_button.component.tsx +3 -0
- data/app/frontend/comments/vote_button.component.tsx +4 -0
- data/app/frontend/comments/vote_button_component.test.tsx +14 -8
- data/app/frontend/entry.ts +19 -0
- data/app/frontend/entry_test.ts +2 -0
- data/app/frontend/queries/comments.query.graphql +2 -2
- data/app/frontend/support/schema.ts +745 -744
- data/app/models/decidim/comments/comment.rb +30 -5
- data/app/queries/decidim/comments/metrics/comments_metric_manage.rb +1 -6
- data/app/queries/decidim/comments/sorted_comments.rb +8 -2
- data/app/scrubbers/decidim/comments/user_input_scrubber.rb +20 -0
- data/app/services/decidim/comments/new_comment_notification_creator.rb +28 -3
- data/app/types/decidim/comments/commentable_interface.rb +2 -1
- data/app/types/decidim/comments/commentable_mutation_type.rb +2 -2
- data/config/locales/ar.yml +10 -1
- data/config/locales/bg-BG.yml +6 -0
- data/config/locales/ca.yml +23 -1
- data/config/locales/cs.yml +35 -13
- data/config/locales/da-DK.yml +1 -0
- data/config/locales/de.yml +23 -1
- data/config/locales/el-GR.yml +1 -0
- data/config/locales/el.yml +122 -0
- data/config/locales/en.yml +23 -1
- data/config/locales/es-MX.yml +23 -1
- data/config/locales/es-PY.yml +23 -1
- data/config/locales/es.yml +23 -1
- data/config/locales/et-EE.yml +1 -0
- data/config/locales/eu.yml +4 -1
- data/config/locales/fi-plain.yml +23 -1
- data/config/locales/fi.yml +29 -7
- data/config/locales/fr-CA.yml +122 -0
- data/config/locales/fr.yml +23 -1
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +4 -1
- data/config/locales/hr-HR.yml +1 -0
- data/config/locales/hu.yml +17 -1
- data/config/locales/id-ID.yml +4 -1
- data/config/locales/is-IS.yml +76 -0
- data/config/locales/it.yml +23 -1
- data/config/locales/ja-JP.yml +120 -0
- data/config/locales/lt-LT.yml +1 -0
- data/config/locales/lv-LV.yml +118 -0
- data/config/locales/mt-MT.yml +1 -0
- data/config/locales/nl.yml +35 -13
- data/config/locales/no.yml +118 -0
- data/config/locales/pl.yml +57 -35
- data/config/locales/pt-BR.yml +5 -2
- data/config/locales/pt.yml +47 -25
- data/config/locales/ro-RO.yml +124 -0
- data/config/locales/ru.yml +12 -1
- data/config/locales/sk-SK.yml +116 -0
- data/config/locales/sk.yml +120 -0
- data/config/locales/sl.yml +4 -0
- data/config/locales/sr-CS.yml +20 -0
- data/config/locales/sv.yml +25 -3
- data/config/locales/tr-TR.yml +4 -1
- data/config/locales/uk.yml +4 -1
- data/db/migrate/20200320105911_index_foreign_keys_in_decidim_comments_comments.rb +7 -0
- data/lib/decidim/comments.rb +1 -0
- data/lib/decidim/comments/markdown.rb +55 -0
- data/lib/decidim/comments/test/shared_examples/comment_event.rb +11 -1
- data/lib/decidim/comments/test/shared_examples/create_comment_context.rb +3 -2
- data/lib/decidim/comments/version.rb +1 -1
- metadata +46 -9
@@ -28,17 +28,29 @@ module Decidim
|
|
28
28
|
has_many :down_votes, -> { where(weight: -1) }, foreign_key: "decidim_comment_id", class_name: "CommentVote", dependent: :destroy
|
29
29
|
|
30
30
|
validates :body, presence: true
|
31
|
-
validates :depth, numericality: { greater_than_or_equal_to: 0 }
|
31
|
+
validates :depth, numericality: { only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: MAX_DEPTH }
|
32
32
|
validates :alignment, inclusion: { in: [0, 1, -1] }
|
33
33
|
|
34
34
|
validates :body, length: { maximum: 1000 }
|
35
35
|
|
36
36
|
validate :commentable_can_have_comments
|
37
37
|
|
38
|
-
|
38
|
+
before_validation :compute_depth
|
39
39
|
|
40
40
|
delegate :organization, to: :commentable
|
41
41
|
|
42
|
+
def self.positive
|
43
|
+
where(alignment: 1)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.neutral
|
47
|
+
where(alignment: 0)
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.negative
|
51
|
+
where(alignment: -1)
|
52
|
+
end
|
53
|
+
|
42
54
|
def participatory_space
|
43
55
|
return root_commentable if root_commentable.is_a?(Decidim::Participable)
|
44
56
|
|
@@ -92,7 +104,7 @@ module Decidim
|
|
92
104
|
|
93
105
|
# Public: Returns the comment message ready to display (it is expected to include HTML)
|
94
106
|
def formatted_body
|
95
|
-
@formatted_body ||= Decidim::ContentProcessor.render(sanitized_body)
|
107
|
+
@formatted_body ||= Decidim::ContentProcessor.render(sanitized_body, "div")
|
96
108
|
end
|
97
109
|
|
98
110
|
def self.export_serializer
|
@@ -125,9 +137,22 @@ module Decidim
|
|
125
137
|
self.depth = commentable.depth + 1 if commentable.respond_to?(:depth)
|
126
138
|
end
|
127
139
|
|
128
|
-
# Private: Returns the comment body sanitized,
|
140
|
+
# Private: Returns the comment body sanitized, sanitizing HTML tags
|
129
141
|
def sanitized_body
|
130
|
-
Rails::Html::
|
142
|
+
Rails::Html::WhiteListSanitizer.new.sanitize(
|
143
|
+
render_markdown(body),
|
144
|
+
scrubber: Decidim::Comments::UserInputScrubber.new
|
145
|
+
).try(:html_safe)
|
146
|
+
end
|
147
|
+
|
148
|
+
# Private: Initializes the Markdown parser
|
149
|
+
def markdown
|
150
|
+
@markdown ||= Decidim::Comments::Markdown.new
|
151
|
+
end
|
152
|
+
|
153
|
+
# Private: converts the string from markdown to html
|
154
|
+
def render_markdown(string)
|
155
|
+
markdown.render(string)
|
131
156
|
end
|
132
157
|
end
|
133
158
|
end
|
@@ -9,9 +9,6 @@ module Decidim
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def save
|
12
|
-
return @registry if @registry
|
13
|
-
|
14
|
-
@registry = []
|
15
12
|
query.each do |key, results|
|
16
13
|
cumulative_value = results[:cumulative]
|
17
14
|
next if cumulative_value.zero?
|
@@ -23,10 +20,8 @@ module Decidim
|
|
23
20
|
organization: @organization, decidim_category_id: category_id,
|
24
21
|
related_object_type: related_object_type, related_object_id: related_object_id)
|
25
22
|
record.assign_attributes(cumulative: cumulative_value, quantity: quantity_value)
|
26
|
-
|
23
|
+
record.save!
|
27
24
|
end
|
28
|
-
@registry.each(&:save!)
|
29
|
-
@registry
|
30
25
|
end
|
31
26
|
|
32
27
|
private
|
@@ -30,8 +30,7 @@ module Decidim
|
|
30
30
|
# loads comments replies. It uses Comment's MAX_DEPTH to load a maximum
|
31
31
|
# level of nested replies.
|
32
32
|
def query
|
33
|
-
scope =
|
34
|
-
.where(commentable: commentable)
|
33
|
+
scope = base_scope
|
35
34
|
.not_hidden
|
36
35
|
.includes(:author, :user_group, :up_votes, :down_votes)
|
37
36
|
|
@@ -53,6 +52,13 @@ module Decidim
|
|
53
52
|
|
54
53
|
private
|
55
54
|
|
55
|
+
def base_scope
|
56
|
+
id = @options[:id]
|
57
|
+
return Comment.where(root_commentable: commentable, id: id) if id.present?
|
58
|
+
|
59
|
+
Comment.where(commentable: commentable)
|
60
|
+
end
|
61
|
+
|
56
62
|
def order_by_older(scope)
|
57
63
|
scope.order(created_at: :asc)
|
58
64
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Comments
|
5
|
+
# Use this class as a scrubber to sanitize user input.
|
6
|
+
# https://stackoverflow.com/a/35073814/2110884.
|
7
|
+
class UserInputScrubber < Rails::Html::PermitScrubber
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
self.tags = custom_allowed_tags
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def custom_allowed_tags
|
16
|
+
%w(p blockquote)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -17,9 +17,12 @@ module Decidim
|
|
17
17
|
# comment - the Comment from which to generate notifications.
|
18
18
|
# mentioned_users - An ActiveRecord::Relation of the users that have been
|
19
19
|
# mentioned
|
20
|
-
|
20
|
+
# mentioned_groups - And ActiveRecord::Relation of the user_groups that have
|
21
|
+
# been mentioned
|
22
|
+
def initialize(comment, mentioned_users, mentioned_groups = nil)
|
21
23
|
@comment = comment
|
22
24
|
@mentioned_users = mentioned_users
|
25
|
+
@mentioned_groups = mentioned_groups
|
23
26
|
@already_notified_users = [comment.author]
|
24
27
|
end
|
25
28
|
|
@@ -28,14 +31,16 @@ module Decidim
|
|
28
31
|
# Returns nothing.
|
29
32
|
def create
|
30
33
|
notify_mentioned_users
|
34
|
+
notify_mentioned_groups
|
31
35
|
notify_parent_comment_author
|
32
36
|
notify_author_followers
|
37
|
+
notify_user_group_followers
|
33
38
|
notify_commentable_recipients
|
34
39
|
end
|
35
40
|
|
36
41
|
private
|
37
42
|
|
38
|
-
attr_reader :comment, :mentioned_users, :already_notified_users
|
43
|
+
attr_reader :comment, :mentioned_users, :mentioned_groups, :already_notified_users
|
39
44
|
|
40
45
|
def notify_mentioned_users
|
41
46
|
affected_users = mentioned_users - already_notified_users
|
@@ -44,6 +49,17 @@ module Decidim
|
|
44
49
|
notify(:user_mentioned, affected_users: affected_users)
|
45
50
|
end
|
46
51
|
|
52
|
+
def notify_mentioned_groups
|
53
|
+
return unless mentioned_groups
|
54
|
+
|
55
|
+
mentioned_groups.each do |group|
|
56
|
+
affected_users = group.accepted_users - already_notified_users
|
57
|
+
@already_notified_users += affected_users
|
58
|
+
|
59
|
+
notify(:user_group_mentioned, affected_users: affected_users, extra: { group: group })
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
47
63
|
# Notifies the author of a comment that their comment has been replied.
|
48
64
|
# Only applies if the comment is a reply.
|
49
65
|
def notify_parent_comment_author
|
@@ -62,6 +78,15 @@ module Decidim
|
|
62
78
|
notify(:comment_by_followed_user, followers: followers)
|
63
79
|
end
|
64
80
|
|
81
|
+
def notify_user_group_followers
|
82
|
+
return if comment.user_group.blank?
|
83
|
+
|
84
|
+
followers = comment.user_group.followers - already_notified_users
|
85
|
+
@already_notified_users += followers
|
86
|
+
|
87
|
+
notify(:comment_by_followed_user_group, followers: followers)
|
88
|
+
end
|
89
|
+
|
65
90
|
# Notifies the users the `comment.commentable` resource implements as necessary.
|
66
91
|
def notify_commentable_recipients
|
67
92
|
followers = comment.commentable.users_to_notify_on_comment_created - already_notified_users
|
@@ -90,7 +115,7 @@ module Decidim
|
|
90
115
|
extra: {
|
91
116
|
comment_id: comment.id
|
92
117
|
}
|
93
|
-
}.
|
118
|
+
}.deep_merge(users)
|
94
119
|
|
95
120
|
Decidim::EventsManager.publish(data)
|
96
121
|
end
|
@@ -29,9 +29,10 @@ module Decidim
|
|
29
29
|
type !types[!CommentType]
|
30
30
|
|
31
31
|
argument :orderBy, types.String, "Order the comments"
|
32
|
+
argument :singleCommentId, types.String, "ID of the single comment to look at"
|
32
33
|
|
33
34
|
resolve lambda { |obj, args, _ctx|
|
34
|
-
SortedComments.for(obj, order_by: args[:orderBy])
|
35
|
+
SortedComments.for(obj, order_by: args[:orderBy], id: args[:singleCommentId])
|
35
36
|
}
|
36
37
|
end
|
37
38
|
|
@@ -16,9 +16,9 @@ module Decidim
|
|
16
16
|
argument :userGroupId, types.ID, "The comment's user group id. Replaces the author."
|
17
17
|
|
18
18
|
resolve lambda { |obj, args, ctx|
|
19
|
-
params = { "comment" => { "body" => args[:body], "alignment" => args[:alignment], "user_group_id" => args[:userGroupId] } }
|
19
|
+
params = { "comment" => { "body" => args[:body], "alignment" => args[:alignment], "user_group_id" => args[:userGroupId], "commentable" => obj } }
|
20
20
|
form = Decidim::Comments::CommentForm.from_params(params).with_context(current_organization: ctx[:current_organization])
|
21
|
-
Decidim::Comments::CreateComment.call(form, ctx[:current_user]
|
21
|
+
Decidim::Comments::CreateComment.call(form, ctx[:current_user]) do
|
22
22
|
on(:ok) do |comment|
|
23
23
|
return comment
|
24
24
|
end
|
data/config/locales/ar.yml
CHANGED
@@ -4,6 +4,7 @@ ar:
|
|
4
4
|
decidim/comments/comment_by_followed_user_event: تعليق
|
5
5
|
decidim/comments/comment_created_event: تعليق
|
6
6
|
decidim/comments/reply_created_event: تعليق الرد
|
7
|
+
decidim/comments/user_group_mentioned_event: أشير
|
7
8
|
decidim/comments/user_mentioned_event: أشير
|
8
9
|
activerecord:
|
9
10
|
models:
|
@@ -50,6 +51,7 @@ ar:
|
|
50
51
|
against: ضد
|
51
52
|
in_favor: لصالح
|
52
53
|
deleted_user: مشارك محذوف
|
54
|
+
hide_replies: إخفاء الردود
|
53
55
|
reply: الرد
|
54
56
|
report:
|
55
57
|
action: أبلغ عن
|
@@ -61,7 +63,8 @@ ar:
|
|
61
63
|
does_not_belong: يحتوي على نشاط غير قانوني أو تهديدات انتحارية أو معلومات شخصية أو أي شيء آخر تعتقد أنه لا ينتمي إلى %{organization_name}.
|
62
64
|
offensive: يحتوي على العنصرية والتمييز الجنسي والتشهير والهجمات الشخصية والتهديدات بالقتل أو طلبات الانتحار أو أي شكل من أشكال خطاب الكراهية.
|
63
65
|
spam: يحتوي على clickbait أو الإعلان أو الخدع أو روبوت البرامج النصية.
|
64
|
-
|
66
|
+
show_replies: اظهر الردود الـ %{replies_count}
|
67
|
+
single_comment_link_title: الحصول على رابط نحو تعليق واحد
|
65
68
|
comment_order_selector:
|
66
69
|
order:
|
67
70
|
best_rated: أفضل تصنيف
|
@@ -74,7 +77,10 @@ ar:
|
|
74
77
|
comments:
|
75
78
|
blocked_comments_for_user_warning: لا يمكنك التعليق في هذه اللحظة ، ولكن يمكنك قراءة التعليقات السابقة.
|
76
79
|
blocked_comments_warning: التعليقات معطلة في هذا الوقت ، لكن يمكنك قراءة التعليقات السابقة.
|
80
|
+
comment_details_title: تفاصيل التعليق
|
77
81
|
loading: جارٍ تحميل التعليقات ...
|
82
|
+
single_comment_warning: يمكنك الإطلاع على التعليقات المتبقية الأخرى <a href="%{url}">هنا</a>.
|
83
|
+
single_comment_warning_title: إنك ترى تعليقا واحدا
|
78
84
|
title: "%{count} تعليقات"
|
79
85
|
events:
|
80
86
|
comments:
|
@@ -83,6 +89,9 @@ ar:
|
|
83
89
|
email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{author_name}. يمكنك إلغاء تتبع هذا المستخدم من صفحة ملفه الشخصي.
|
84
90
|
email_subject: هناك تعليق جديد مِن %{author_name} على %{resource_title}
|
85
91
|
notification_title: هناك تعليق جديد مِن <a href="%{author_path}">%{author_name} %{author_nickname}</a> على <a href="%{resource_path}">%{resource_title}</a>.
|
92
|
+
comment_by_followed_user_group:
|
93
|
+
email_subject: هناك تعليق جديد مِن %{author_name} على %{resource_title}
|
94
|
+
notification_title: هناك تعليق جديد مِن <a href="%{author_path}">%{author_name} %{author_nickname}</a> على <a href="%{resource_path}">%{resource_title}</a>.
|
86
95
|
comment_created:
|
87
96
|
email_intro: "%{resource_title} تم التعليق. يمكنك قراءة التعليق في هذه الصفحة:"
|
88
97
|
email_outro: لقد تلقيت هذا الإشعار لأنك تتابع "%{resource_title}" أو مؤلفه. يمكنك إلغاء تتبعه من الرابط السابق.
|
data/config/locales/ca.yml
CHANGED
@@ -4,6 +4,7 @@ ca:
|
|
4
4
|
decidim/comments/comment_by_followed_user_event: Comentari
|
5
5
|
decidim/comments/comment_created_event: Comentari
|
6
6
|
decidim/comments/reply_created_event: Resposta al comentari
|
7
|
+
decidim/comments/user_group_mentioned_event: Mencionar
|
7
8
|
decidim/comments/user_mentioned_event: Mencionar
|
8
9
|
activerecord:
|
9
10
|
models:
|
@@ -16,6 +17,7 @@ ca:
|
|
16
17
|
decidim:
|
17
18
|
comments:
|
18
19
|
comments: Comentaris
|
20
|
+
comments_count: Número de comentaris
|
19
21
|
last_activity:
|
20
22
|
new_comment_at_html: "<span>Nou comentari a %{link}</span>"
|
21
23
|
votes:
|
@@ -42,6 +44,7 @@ ca:
|
|
42
44
|
against: En contra
|
43
45
|
in_favor: A favor
|
44
46
|
deleted_user: Participant eliminada
|
47
|
+
hide_replies: Oculta les respostes
|
45
48
|
reply: Respondre
|
46
49
|
report:
|
47
50
|
action: Denúncia
|
@@ -53,7 +56,9 @@ ca:
|
|
53
56
|
does_not_belong: Conté activitat il·legal, amenaces de suïcidi, informació personal, o qualsevol altra cosa que creguis que no pertany a %{organization_name}.
|
54
57
|
offensive: Conté racisme, sexisme, insults, atacs personals, amenaces de mort, peticions de suïcidi o qualsevol forma de discurs d'odi.
|
55
58
|
spam: Conté "clickbait", publicitat o estafes.
|
56
|
-
title:
|
59
|
+
title: Notificar contingut inapropiat
|
60
|
+
show_replies: Mostra %{replies_count} respostes
|
61
|
+
single_comment_link_title: Aconsegueix l'enllaç al comentari
|
57
62
|
comment_order_selector:
|
58
63
|
order:
|
59
64
|
best_rated: Més ben valorats
|
@@ -66,8 +71,15 @@ ca:
|
|
66
71
|
comments:
|
67
72
|
blocked_comments_for_user_warning: No pots fer comentaris en aquest moment, però pots llegir els anteriors.
|
68
73
|
blocked_comments_warning: Els comentaris estan desactivats en aquest moment, però pots llegir els anteriors.
|
74
|
+
comment_details_title: Detalls del comentari
|
69
75
|
loading: Carregant els comentaris ...
|
76
|
+
single_comment_warning: Pots revisar la resta de comentaris <a href="%{url}">aquí</a>.
|
77
|
+
single_comment_warning_title: Estàs veient un sol comentari
|
70
78
|
title: "%{count} comentaris"
|
79
|
+
down_vote_button:
|
80
|
+
text: No estic d'acord amb aquest comentari
|
81
|
+
up_vote_button:
|
82
|
+
text: Estic d'acord amb aquest comentari
|
71
83
|
events:
|
72
84
|
comments:
|
73
85
|
comment_by_followed_user:
|
@@ -75,6 +87,11 @@ ca:
|
|
75
87
|
email_outro: Has rebut aquesta notificació perquè estàs seguint %{author_name}. Pots deixar de seguir a aquesta participant des de la seva pàgina de perfil.
|
76
88
|
email_subject: Hi ha un nou comentari de %{author_name} en %{resource_title}
|
77
89
|
notification_title: Hi ha un nou comentari per <a href="%{author_path}">%{author_name} %{author_nickname}</a> a <a href="%{resource_path}">%{resource_title}</a>.
|
90
|
+
comment_by_followed_user_group:
|
91
|
+
email_intro: '%{author_name} ha deixat un comentari a%{resource_title}. Pots llegir-lo en aquesta pàgina:'
|
92
|
+
email_outro: Reps aquesta notificació perquè segueixes a %{author_name}. Pots deixar de seguir aquest grup des de la seva pàgina de perfil.
|
93
|
+
email_subject: Hi ha un nou comentari de %{author_name} en %{resource_title}
|
94
|
+
notification_title: Hi ha un nou comentari per <a href="%{author_path}">%{author_name} %{author_nickname}</a> a <a href="%{resource_path}">%{resource_title}</a>.
|
78
95
|
comment_created:
|
79
96
|
email_intro: "S'ha comentat %{resource_title}. Pots llegir el comentari d'aquesta pàgina:"
|
80
97
|
email_outro: Has rebut aquesta notificació perquè estàs seguint "%{resource_title}" o la seva autora. Pots deixar de seguir-la des de l'enllaç anterior.
|
@@ -85,6 +102,11 @@ ca:
|
|
85
102
|
email_outro: Has rebut aquesta notificació perquè s'ha respost el teu comentari.
|
86
103
|
email_subject: "%{author_name} ha respost el teu comentari a %{resource_title}"
|
87
104
|
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> ha respost el teu comentari a <a href="%{resource_path}">%{resource_title}</a>
|
105
|
+
user_group_mentioned:
|
106
|
+
email_intro: Un grup al qual pertanys ha estat esmentat
|
107
|
+
email_outro: Has rebut aquesta notificació perquè formes part del grup %{group_name} que ha estat esmentat a %{resource_title}.
|
108
|
+
email_subject: T'han esmentat a %{resource_title} com a membre de %{group_name}
|
109
|
+
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> t'ha esmentat com a membre de <a href="%{group_path}">%{group_name} %{group_nickname}</a> a <a href="%{resource_path}">%{resource_title}</a>
|
88
110
|
user_mentioned:
|
89
111
|
email_intro: Has estat esmentada
|
90
112
|
email_outro: Has rebut aquesta notificació perquè has estat esmentada a %{resource_title}.
|
data/config/locales/cs.yml
CHANGED
@@ -4,7 +4,8 @@ cs:
|
|
4
4
|
decidim/comments/comment_by_followed_user_event: Komentář
|
5
5
|
decidim/comments/comment_created_event: Komentář
|
6
6
|
decidim/comments/reply_created_event: Odpověď na komentář
|
7
|
-
decidim/comments/
|
7
|
+
decidim/comments/user_group_mentioned_event: Zmínka
|
8
|
+
decidim/comments/user_mentioned_event: Zmínka
|
8
9
|
activerecord:
|
9
10
|
models:
|
10
11
|
decidim/comments/comment:
|
@@ -13,65 +14,76 @@ cs:
|
|
13
14
|
many: Komentáře
|
14
15
|
other: Komentáře
|
15
16
|
decidim/comments/comment_vote:
|
16
|
-
one:
|
17
|
+
one: Hlasovat
|
17
18
|
few: Hlasy
|
18
19
|
many: Hlasy
|
19
20
|
other: Hlasy
|
20
21
|
decidim:
|
21
22
|
comments:
|
22
23
|
comments: Komentáře
|
24
|
+
comments_count: Počet komentářů
|
23
25
|
last_activity:
|
24
26
|
new_comment_at_html: "<span>Nový komentář v %{link}</span>"
|
25
27
|
votes:
|
26
28
|
create:
|
27
|
-
error: Při hlasování
|
29
|
+
error: Při hlasování o komentáři došlo k chybě.
|
28
30
|
components:
|
29
31
|
add_comment_form:
|
30
|
-
account_message: <a href="%{sign_in_url}">Přihlaste se
|
32
|
+
account_message: <a href="%{sign_in_url}">Přihlaste se pomocí svého účtu</a> nebo se <a href="%{sign_up_url}">zaregistrujte</a> a přidejte svůj komentář.
|
31
33
|
form:
|
32
34
|
body:
|
33
35
|
label: Komentář
|
34
36
|
placeholder: Co si o tom myslíš?
|
35
37
|
form_error: Text je povinný a nesmí být delší než %{length} znaků.
|
36
|
-
submit:
|
38
|
+
submit: Odeslat
|
37
39
|
user_group_id:
|
38
40
|
label: Komentovat jako
|
39
41
|
opinion:
|
40
42
|
neutral: Neutrální
|
41
43
|
remaining_characters: "Zbývá %{count} znaků"
|
42
|
-
remaining_characters_1: "Zbývá %{count}
|
44
|
+
remaining_characters_1: "Zbývá %{count} znak"
|
43
45
|
title: Přidejte svůj komentář
|
44
46
|
comment:
|
45
47
|
alignment:
|
46
48
|
against: Proti
|
47
49
|
in_favor: Ve prospěch
|
48
|
-
deleted_user: Vymazaný
|
50
|
+
deleted_user: Vymazaný účastník
|
51
|
+
hide_replies: Skrýt odpovědi
|
49
52
|
reply: Odpověď
|
50
53
|
report:
|
51
54
|
action: Zpráva
|
52
|
-
already_reported: Tento obsah je již nahlášen a bude
|
55
|
+
already_reported: Tento obsah je již nahlášen a bude přezkoumán administrátorem.
|
53
56
|
close: Zavřít
|
54
57
|
description: Je tento obsah nevhodný?
|
55
58
|
details: Další komentáře
|
56
59
|
reasons:
|
57
60
|
does_not_belong: Obsahuje nezákonnou činnost, sebevražedné hrozby, osobní informace nebo něco jiného, o kterém si myslíte, že nepatří na %{organization_name}.
|
58
61
|
offensive: Obsahuje rasismus, sexismus, podvody, osobní útoky, hrozby smrti, žádosti o sebevraždu nebo jakoukoli formu projevy nenávisti.
|
59
|
-
spam: Obsahuje clickbait,
|
60
|
-
title: Nahlásit
|
62
|
+
spam: Obsahuje clickbait, reklamu, podvody nebo škodlivé skripty.
|
63
|
+
title: Nahlásit nevhodný obsah
|
64
|
+
show_replies: Zobrazit %{replies_count} odpovědí
|
65
|
+
single_comment_link_title: Získat odkaz na jeden komentář
|
61
66
|
comment_order_selector:
|
62
67
|
order:
|
63
68
|
best_rated: Nejlépe hodnocené
|
64
69
|
most_discussed: Nejdiskutovanější
|
65
70
|
older: Starší
|
66
|
-
recent:
|
71
|
+
recent: Nedávné
|
67
72
|
title: 'Seřadit podle:'
|
68
73
|
comment_thread:
|
69
74
|
title: Konverzace s číslem %{authorName}
|
70
75
|
comments:
|
71
|
-
blocked_comments_for_user_warning:
|
72
|
-
blocked_comments_warning: Komentáře jsou
|
76
|
+
blocked_comments_for_user_warning: Momentálně nemůžete komentovat, ale můžete si přečíst ty předchozí.
|
77
|
+
blocked_comments_warning: Komentáře jsou momentálně zakázány, ale můžete si přečíst ty předchozí.
|
78
|
+
comment_details_title: Podrobnosti komentáře
|
73
79
|
loading: Načítání komentářů ...
|
80
|
+
single_comment_warning: Můžete zkontrolovat zbytek komentářů <a href="%{url}">zde</a>.
|
81
|
+
single_comment_warning_title: Vidíte jeden komentář
|
74
82
|
title: "%{count} komentářů"
|
83
|
+
down_vote_button:
|
84
|
+
text: Nesouhlasím s tímto komentářem
|
85
|
+
up_vote_button:
|
86
|
+
text: Souhlasím s tímto komentářem
|
75
87
|
events:
|
76
88
|
comments:
|
77
89
|
comment_by_followed_user:
|
@@ -79,6 +91,11 @@ cs:
|
|
79
91
|
email_outro: Toto oznámení jste obdrželi, protože jste sledovali %{author_name}. Tento uživatel můžete zrušit ze své profilové stránky.
|
80
92
|
email_subject: K dispozici je nový komentář %{author_name} v %{resource_title}
|
81
93
|
notification_title: K dispozici je nový komentář <a href="%{author_path}">%{author_name} %{author_nickname}</a> v <a href="%{resource_path}">%{resource_title}</a>.
|
94
|
+
comment_by_followed_user_group:
|
95
|
+
email_intro: 'Skupina %{author_name} zanechala komentář v %{resource_title}. Můžete si jej přečíst na této stránce:'
|
96
|
+
email_outro: Obdrželi jste toto oznámení, protože sledujete %{author_name}. Můžete zrušit sledování této skupiny na její profilové stránce.
|
97
|
+
email_subject: K dispozici je nový komentář %{author_name} v %{resource_title}
|
98
|
+
notification_title: K dispozici je nový komentář <a href="%{author_path}">%{author_name} %{author_nickname}</a> v <a href="%{resource_path}">%{resource_title}</a>.
|
82
99
|
comment_created:
|
83
100
|
email_intro: "%{resource_title} bylo komentováno. Můžete si přečíst komentář na této stránce:"
|
84
101
|
email_outro: Toto oznámení jste obdrželi, protože jste sledovali "%{resource_title}" nebo jeho autora. Můžete jej odhlásit od předchozího odkazu.
|
@@ -89,6 +106,11 @@ cs:
|
|
89
106
|
email_outro: Toto oznámení jste obdrželi, protože váš komentář byl zodpovězen.
|
90
107
|
email_subject: "%{author_name} odpověděl váš komentář v %{resource_title}"
|
91
108
|
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> odpověděl / a svůj komentář v <a href="%{resource_path}">%{resource_title}</a>
|
109
|
+
user_group_mentioned:
|
110
|
+
email_intro: Byla zmíněna skupina, do které patříte
|
111
|
+
email_outro: Obdrželi jste toto oznámení, protože jste členem skupiny %{group_name}, která byla zmíněna v %{resource_title}.
|
112
|
+
email_subject: Byl jste zmíněn v %{resource_title} jako člen %{group_name}
|
113
|
+
notification_title: Byli jste zmíněni v <a href="%{resource_path}">%{resource_title}</a> od <a href="%{author_path}">%{author_name} %{author_nickname}</a> jako člen <a href="%{group_path}">%{group_name} %{group_nickname}</a>
|
92
114
|
user_mentioned:
|
93
115
|
email_intro: Byl jste zmíněn
|
94
116
|
email_outro: Toto oznámení jste obdrželi, protože jste byli uvedeni v %{resource_title}.
|