decidim-comments 0.22.0 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/decidim/comments/bundle.js +53 -53
- data/app/assets/javascripts/decidim/comments/bundle.js.map +1 -1
- data/app/cells/decidim/comments/comment_activity_cell.rb +2 -22
- data/app/cells/decidim/comments/comment_cell.rb +22 -0
- data/app/cells/decidim/comments/comment_m/footer.erb +5 -0
- data/app/cells/decidim/comments/comment_m/top.erb +7 -0
- data/app/cells/decidim/comments/comment_m_cell.rb +29 -0
- data/app/commands/decidim/comments/create_comment.rb +1 -1
- data/app/forms/decidim/comments/comment_form.rb +8 -1
- data/app/frontend/comments/add_comment_form.component.test.tsx +30 -28
- data/app/frontend/comments/add_comment_form.component.tsx +32 -16
- data/app/frontend/comments/comment.component.test.tsx +35 -4
- data/app/frontend/comments/comment.component.tsx +24 -15
- data/app/frontend/comments/comment_thread.component.test.tsx +9 -8
- data/app/frontend/comments/comment_thread.component.tsx +3 -1
- data/app/frontend/comments/comments.component.test.tsx +17 -14
- data/app/frontend/comments/comments.component.tsx +28 -4
- data/app/frontend/comments/down_vote_button.component.tsx +24 -9
- data/app/frontend/comments/up_vote_button.component.tsx +24 -9
- data/app/frontend/mutations/add_comment.mutation.graphql +2 -2
- data/app/frontend/mutations/down_vote.mutation.graphql +2 -2
- data/app/frontend/mutations/up_vote.mutation.graphql +2 -2
- data/app/frontend/queries/comments.query.graphql +2 -2
- data/app/frontend/support/schema.ts +1060 -735
- data/app/helpers/decidim/comments/comment_cells_helper.rb +33 -0
- data/app/models/decidim/comments/comment.rb +73 -20
- data/app/models/decidim/comments/seed.rb +1 -1
- data/app/types/decidim/comments/commentable_interface.rb +1 -1
- data/app/types/decidim/comments/commentable_mutation_type.rb +4 -1
- data/config/locales/am-ET.yml +1 -0
- data/config/locales/bg.yml +6 -0
- data/config/locales/ca.yml +1 -0
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es-PY.yml +1 -0
- data/config/locales/es.yml +3 -2
- data/config/locales/et.yml +1 -0
- data/config/locales/fi-plain.yml +1 -0
- data/config/locales/fi.yml +2 -1
- data/config/locales/fr-CA.yml +2 -1
- data/config/locales/fr.yml +2 -1
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +1 -1
- data/config/locales/is-IS.yml +0 -2
- data/config/locales/is.yml +76 -0
- data/config/locales/ja-JP.yml +2 -2
- data/config/locales/ja.yml +121 -0
- data/config/locales/ko-KR.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +1 -0
- data/config/locales/{lv-LV.yml → lv.yml} +0 -0
- data/config/locales/mt.yml +1 -0
- data/config/locales/nl.yml +3 -2
- data/config/locales/om-ET.yml +1 -0
- data/config/locales/pl.yml +5 -5
- data/config/locales/so-SO.yml +1 -0
- data/config/locales/sv.yml +1 -0
- data/config/locales/ti-ER.yml +1 -0
- data/config/locales/uk.yml +0 -1
- data/config/locales/vi-VN.yml +1 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +121 -0
- data/config/locales/zh-TW.yml +1 -0
- data/db/migrate/20200706123136_make_comments_handle_i18n.rb +41 -0
- data/db/migrate/20200828101910_add_commentable_counter_cache_to_comments.rb +9 -0
- data/lib/decidim/comments/api/comment_type.rb +5 -1
- data/lib/decidim/comments/comment_serializer.rb +7 -2
- data/lib/decidim/comments/comment_vote_serializer.rb +5 -1
- data/lib/decidim/comments/commentable.rb +11 -0
- data/lib/decidim/comments/comments_helper.rb +28 -4
- data/lib/decidim/comments/engine.rb +13 -0
- data/lib/decidim/comments/mutation_extensions.rb +8 -0
- data/lib/decidim/comments/query_extensions.rb +4 -0
- data/lib/decidim/comments/test/factories.rb +10 -1
- data/lib/decidim/comments/test/shared_examples/comment_event.rb +1 -1
- data/lib/decidim/comments/version.rb +1 -1
- metadata +37 -11
@@ -37,7 +37,11 @@ module Decidim
|
|
37
37
|
private
|
38
38
|
|
39
39
|
def root_commentable_url
|
40
|
-
@root_commentable_url ||=
|
40
|
+
@root_commentable_url ||= if resource.comment.root_commentable&.respond_to?(:polymorphic_resource_url)
|
41
|
+
resource.comment.root_commentable.polymorphic_resource_url
|
42
|
+
else
|
43
|
+
ResourceLocatorPresenter.new(resource.comment.root_commentable).url
|
44
|
+
end
|
41
45
|
end
|
42
46
|
end
|
43
47
|
end
|
@@ -51,6 +51,17 @@ module Decidim
|
|
51
51
|
def user_allowed_to_comment?(_user)
|
52
52
|
true
|
53
53
|
end
|
54
|
+
|
55
|
+
# Public: Updates the comments counter cache. We have to do it these
|
56
|
+
# way in order to properly calculate the coutner with hidden
|
57
|
+
# comments.
|
58
|
+
#
|
59
|
+
# rubocop:disable Rails/SkipsModelValidations
|
60
|
+
def update_comments_count
|
61
|
+
comments_count = comments.not_hidden.count
|
62
|
+
update_columns(comments_count: comments_count, updated_at: Time.current)
|
63
|
+
end
|
64
|
+
# rubocop:enable Rails/SkipsModelValidations
|
54
65
|
end
|
55
66
|
end
|
56
67
|
end
|
@@ -26,9 +26,13 @@ module Decidim
|
|
26
26
|
commentable_type = resource.commentable_type
|
27
27
|
commentable_id = resource.id.to_s
|
28
28
|
node_id = "comments-for-#{commentable_type.demodulize}-#{commentable_id}"
|
29
|
-
react_comments_component(
|
30
|
-
|
31
|
-
|
29
|
+
react_comments_component(
|
30
|
+
node_id, commentableType: commentable_type,
|
31
|
+
commentableId: commentable_id,
|
32
|
+
locale: I18n.locale,
|
33
|
+
toggleTranslations: machine_translations_toggled?,
|
34
|
+
commentsMaxLength: comments_max_length(resource)
|
35
|
+
)
|
32
36
|
end
|
33
37
|
|
34
38
|
# Private: Render Comments component using inline javascript
|
@@ -44,11 +48,31 @@ module Decidim
|
|
44
48
|
{
|
45
49
|
commentableType: "#{props[:commentableType]}",
|
46
50
|
commentableId: "#{props[:commentableId]}",
|
47
|
-
locale: "#{props[:locale]}"
|
51
|
+
locale: "#{props[:locale]}",
|
52
|
+
toggleTranslations: #{props[:toggleTranslations]},
|
53
|
+
commentsMaxLength: "#{props[:commentsMaxLength]}"
|
48
54
|
}
|
49
55
|
);
|
50
56
|
})
|
51
57
|
end
|
58
|
+
|
59
|
+
def comments_max_length(resource)
|
60
|
+
return 1000 unless resource.respond_to?(:component)
|
61
|
+
return component_comments_max_length(resource) if component_comments_max_length(resource)
|
62
|
+
return organization_comments_max_length(resource) if organization_comments_max_length(resource)
|
63
|
+
|
64
|
+
1000
|
65
|
+
end
|
66
|
+
|
67
|
+
def component_comments_max_length(resource)
|
68
|
+
return unless resource.component&.settings.respond_to?(:comments_max_length)
|
69
|
+
|
70
|
+
resource.component.settings.comments_max_length if resource.component.settings.comments_max_length.positive?
|
71
|
+
end
|
72
|
+
|
73
|
+
def organization_comments_max_length(resource)
|
74
|
+
resource.component.organization.comments_max_length if resource.component.organization.comments_max_length.positive?
|
75
|
+
end
|
52
76
|
end
|
53
77
|
end
|
54
78
|
end
|
@@ -59,6 +59,19 @@ module Decidim
|
|
59
59
|
metric_operation.manager_class = "Decidim::Comments::Metrics::CommentParticipantsMetricMeasure"
|
60
60
|
end
|
61
61
|
end
|
62
|
+
|
63
|
+
initializer "decidim_comments.register_resources" do
|
64
|
+
Decidim.register_resource(:comment) do |resource|
|
65
|
+
resource.model_class_name = "Decidim::Comments::Comment"
|
66
|
+
resource.card = "decidim/comments/comment"
|
67
|
+
resource.searchable = true
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
initializer "decidim_comments.add_cells_view_paths" do
|
72
|
+
Cell::ViewModel.view_paths << File.expand_path("#{Decidim::Comments::Engine.root}/app/cells")
|
73
|
+
Cell::ViewModel.view_paths << File.expand_path("#{Decidim::Comments::Engine.root}/app/views") # for partials
|
74
|
+
end
|
62
75
|
end
|
63
76
|
end
|
64
77
|
end
|
@@ -16,8 +16,12 @@ module Decidim
|
|
16
16
|
|
17
17
|
argument :id, !types.String, "The commentable's ID"
|
18
18
|
argument :type, !types.String, "The commentable's class name. i.e. `Decidim::ParticipatoryProcess`"
|
19
|
+
argument :locale, !types.String, "The locale for which to get the comments text"
|
20
|
+
argument :toggleTranslations, !types.Boolean, "Whether the user asked to toggle the machine translations or not."
|
19
21
|
|
20
22
|
resolve lambda { |_obj, args, _ctx|
|
23
|
+
I18n.locale = args[:locale].presence
|
24
|
+
RequestStore.store[:toggle_machine_translations] = args[:toggleTranslations]
|
21
25
|
args[:type].constantize.find(args[:id])
|
22
26
|
}
|
23
27
|
end
|
@@ -26,8 +30,12 @@ module Decidim
|
|
26
30
|
description "A comment"
|
27
31
|
|
28
32
|
argument :id, !types.ID, "The comment's id"
|
33
|
+
argument :locale, !types.String, "The locale for which to get the comments text"
|
34
|
+
argument :toggleTranslations, !types.Boolean, "Whether the user asked to toggle the machine translations or not."
|
29
35
|
|
30
36
|
resolve lambda { |_obj, args, _ctx|
|
37
|
+
I18n.locale = args[:locale].presence
|
38
|
+
RequestStore.store[:toggle_machine_translations] = args[:toggleTranslations]
|
31
39
|
Comment.find(args["id"])
|
32
40
|
}
|
33
41
|
end
|
@@ -16,8 +16,12 @@ module Decidim
|
|
16
16
|
|
17
17
|
argument :id, !types.String, "The commentable's ID"
|
18
18
|
argument :type, !types.String, "The commentable's class name. i.e. `Decidim::ParticipatoryProcess`"
|
19
|
+
argument :locale, !types.String, "The locale for which to get the comments text"
|
20
|
+
argument :toggleTranslations, !types.Boolean, "Whether the user asked to toggle the machine translations or not."
|
19
21
|
|
20
22
|
resolve lambda { |_obj, args, _ctx|
|
23
|
+
I18n.locale = args[:locale].presence
|
24
|
+
RequestStore.store[:toggle_machine_translations] = args[:toggleTranslations]
|
21
25
|
args[:type].constantize.find(args[:id])
|
22
26
|
}
|
23
27
|
end
|
@@ -7,7 +7,16 @@ FactoryBot.define do
|
|
7
7
|
author { build(:user, organization: commentable.organization) }
|
8
8
|
commentable { build(:dummy_resource) }
|
9
9
|
root_commentable { commentable }
|
10
|
-
body { Faker::
|
10
|
+
body { Decidim::Faker::Localized.paragraph }
|
11
|
+
|
12
|
+
after(:build) do |comment, evaluator|
|
13
|
+
comment.body = if evaluator.body.is_a?(String)
|
14
|
+
{ comment.root_commentable.organization.default_locale || "en" => evaluator.body }
|
15
|
+
else
|
16
|
+
evaluator.body
|
17
|
+
end
|
18
|
+
comment.body = Decidim::ContentProcessor.parse_with_processor(:hashtag, comment.body, current_organization: comment.root_commentable.organization).rewrite
|
19
|
+
end
|
11
20
|
|
12
21
|
trait :comment_on_comment do
|
13
22
|
author { build(:user, organization: root_commentable.organization) }
|
@@ -16,7 +16,7 @@ shared_context "when it's a comment event" do
|
|
16
16
|
let(:comment_author_name) { decidim_html_escape comment.author.name }
|
17
17
|
|
18
18
|
let(:extra) { { comment_id: comment.id } }
|
19
|
-
let(:resource_title) { decidim_html_escape
|
19
|
+
let(:resource_title) { decidim_html_escape(translated(resource.title)) }
|
20
20
|
let(:user_group) do
|
21
21
|
user_group = create(:user_group, :verified, organization: organization, users: [comment_author])
|
22
22
|
comment.update!(user_group: user_group)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-comments
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-
|
13
|
+
date: 2020-11-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: decidim-core
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.23.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.
|
28
|
+
version: 0.23.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: jquery-rails
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,28 +60,28 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - '='
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.
|
63
|
+
version: 0.23.0
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - '='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.
|
70
|
+
version: 0.23.0
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: decidim-dev
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - '='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.
|
77
|
+
version: 0.23.0
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - '='
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 0.
|
84
|
+
version: 0.23.0
|
85
85
|
description: Pluggable comments system for some components.
|
86
86
|
email:
|
87
87
|
- josepjaume@gmail.com
|
@@ -98,6 +98,10 @@ files:
|
|
98
98
|
- app/assets/javascripts/decidim/comments/bundle.js.map
|
99
99
|
- app/assets/javascripts/decidim/comments/comments.js.erb
|
100
100
|
- app/cells/decidim/comments/comment_activity_cell.rb
|
101
|
+
- app/cells/decidim/comments/comment_cell.rb
|
102
|
+
- app/cells/decidim/comments/comment_m/footer.erb
|
103
|
+
- app/cells/decidim/comments/comment_m/top.erb
|
104
|
+
- app/cells/decidim/comments/comment_m_cell.rb
|
101
105
|
- app/commands/decidim/comments/create_comment.rb
|
102
106
|
- app/commands/decidim/comments/vote_comment.rb
|
103
107
|
- app/events/decidim/comments/comment_by_followed_user_event.rb
|
@@ -151,6 +155,7 @@ files:
|
|
151
155
|
- app/frontend/support/require_all.ts
|
152
156
|
- app/frontend/support/resolve_graphql_query.ts
|
153
157
|
- app/frontend/support/schema.ts
|
158
|
+
- app/helpers/decidim/comments/comment_cells_helper.rb
|
154
159
|
- app/models/decidim/comments/application_record.rb
|
155
160
|
- app/models/decidim/comments/comment.rb
|
156
161
|
- app/models/decidim/comments/comment_vote.rb
|
@@ -165,22 +170,27 @@ files:
|
|
165
170
|
- app/types/decidim/comments/commentable_interface.rb
|
166
171
|
- app/types/decidim/comments/commentable_mutation_type.rb
|
167
172
|
- app/types/decidim/comments/commentable_type.rb
|
173
|
+
- config/locales/am-ET.yml
|
168
174
|
- config/locales/ar-SA.yml
|
169
175
|
- config/locales/ar.yml
|
170
176
|
- config/locales/bg-BG.yml
|
177
|
+
- config/locales/bg.yml
|
171
178
|
- config/locales/ca.yml
|
172
179
|
- config/locales/cs-CZ.yml
|
173
180
|
- config/locales/cs.yml
|
174
181
|
- config/locales/da-DK.yml
|
182
|
+
- config/locales/da.yml
|
175
183
|
- config/locales/de.yml
|
176
184
|
- config/locales/el-GR.yml
|
177
185
|
- config/locales/el.yml
|
178
186
|
- config/locales/en.yml
|
179
187
|
- config/locales/eo-UY.yml
|
188
|
+
- config/locales/eo.yml
|
180
189
|
- config/locales/es-MX.yml
|
181
190
|
- config/locales/es-PY.yml
|
182
191
|
- config/locales/es.yml
|
183
192
|
- config/locales/et-EE.yml
|
193
|
+
- config/locales/et.yml
|
184
194
|
- config/locales/eu.yml
|
185
195
|
- config/locales/fi-pl.yml
|
186
196
|
- config/locales/fi-plain.yml
|
@@ -190,16 +200,24 @@ files:
|
|
190
200
|
- config/locales/ga-IE.yml
|
191
201
|
- config/locales/gl.yml
|
192
202
|
- config/locales/hr-HR.yml
|
203
|
+
- config/locales/hr.yml
|
193
204
|
- config/locales/hu.yml
|
194
205
|
- config/locales/id-ID.yml
|
195
206
|
- config/locales/is-IS.yml
|
207
|
+
- config/locales/is.yml
|
196
208
|
- config/locales/it.yml
|
197
209
|
- config/locales/ja-JP.yml
|
210
|
+
- config/locales/ja.yml
|
211
|
+
- config/locales/ko-KR.yml
|
212
|
+
- config/locales/ko.yml
|
198
213
|
- config/locales/lt-LT.yml
|
199
|
-
- config/locales/
|
214
|
+
- config/locales/lt.yml
|
215
|
+
- config/locales/lv.yml
|
200
216
|
- config/locales/mt-MT.yml
|
217
|
+
- config/locales/mt.yml
|
201
218
|
- config/locales/nl.yml
|
202
219
|
- config/locales/no.yml
|
220
|
+
- config/locales/om-ET.yml
|
203
221
|
- config/locales/pl.yml
|
204
222
|
- config/locales/pt-BR.yml
|
205
223
|
- config/locales/pt.yml
|
@@ -208,10 +226,16 @@ files:
|
|
208
226
|
- config/locales/sk-SK.yml
|
209
227
|
- config/locales/sk.yml
|
210
228
|
- config/locales/sl.yml
|
229
|
+
- config/locales/so-SO.yml
|
211
230
|
- config/locales/sr-CS.yml
|
212
231
|
- config/locales/sv.yml
|
232
|
+
- config/locales/ti-ER.yml
|
213
233
|
- config/locales/tr-TR.yml
|
214
234
|
- config/locales/uk.yml
|
235
|
+
- config/locales/vi-VN.yml
|
236
|
+
- config/locales/vi.yml
|
237
|
+
- config/locales/zh-CN.yml
|
238
|
+
- config/locales/zh-TW.yml
|
215
239
|
- db/migrate/20161130143508_create_comments.rb
|
216
240
|
- db/migrate/20161214082645_add_depth_to_comments.rb
|
217
241
|
- db/migrate/20161216102820_add_alignment_to_comments.rb
|
@@ -224,6 +248,8 @@ files:
|
|
224
248
|
- db/migrate/20181016142511_make_authors_polymorphic_for_comments.rb
|
225
249
|
- db/migrate/20181019092928_make_author_polymorphic_for_comment_votes.rb
|
226
250
|
- db/migrate/20200320105911_index_foreign_keys_in_decidim_comments_comments.rb
|
251
|
+
- db/migrate/20200706123136_make_comments_handle_i18n.rb
|
252
|
+
- db/migrate/20200828101910_add_commentable_counter_cache_to_comments.rb
|
227
253
|
- db/seeds.rb
|
228
254
|
- lib/decidim/comments.rb
|
229
255
|
- lib/decidim/comments/admin.rb
|
@@ -257,14 +283,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
257
283
|
requirements:
|
258
284
|
- - ">="
|
259
285
|
- !ruby/object:Gem::Version
|
260
|
-
version: '2.
|
286
|
+
version: '2.6'
|
261
287
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
262
288
|
requirements:
|
263
289
|
- - ">="
|
264
290
|
- !ruby/object:Gem::Version
|
265
291
|
version: '0'
|
266
292
|
requirements: []
|
267
|
-
rubygems_version: 3.
|
293
|
+
rubygems_version: 3.0.3
|
268
294
|
signing_key:
|
269
295
|
specification_version: 4
|
270
296
|
summary: Decidim comments module
|