decidim-comments 0.18.1 → 0.19.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/commands/decidim/comments/create_comment.rb +1 -0
- data/app/events/decidim/comments/comment_by_followed_user_event.rb +1 -25
- data/app/events/decidim/comments/comment_created_event.rb +1 -25
- data/app/events/decidim/comments/comment_event.rb +38 -0
- data/app/events/decidim/comments/reply_created_event.rb +1 -25
- data/app/events/decidim/comments/user_mentioned_event.rb +1 -25
- data/app/models/decidim/comments/comment.rb +7 -0
- data/app/models/decidim/comments/comment_vote.rb +1 -0
- data/app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb +2 -0
- data/app/queries/decidim/comments/metrics/comments_metric_manage.rb +5 -0
- data/db/migrate/20170510091348_update_root_commentable_for_comments.rb +1 -0
- data/lib/decidim/comments/comments_helper.rb +2 -0
- data/lib/decidim/comments/test.rb +1 -0
- data/lib/decidim/comments/test/shared_examples/comment_event.rb +35 -0
- data/lib/decidim/comments/version.rb +1 -1
- metadata +11 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f4e5986a2b09374bb8c2280de408bf5558d5ce57ee51d9d96e019a14310600d
|
4
|
+
data.tar.gz: f8a6f8e3d129d97233ca57feb43fa4ab0d4c0eebe7e3970dea66a550899ff288
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7ca0fe89067bbbcb59fd111d2f6ad4c13ada5ced2b51affc57e967070f8a6681d0a1e69fc213d4dc4f5f4935e25a2bddcd439057b1643bf44ea344e17429942
|
7
|
+
data.tar.gz: f99afe1133b42867846a51793cc9f96d5401fd6a5b891aac310aa19fa0aa3d5a20a22dff7063f260bba4482d1840154786a3d0b510d3aab192c04ae782738b50
|
@@ -3,31 +3,7 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Comments
|
5
5
|
class CommentByFollowedUserEvent < Decidim::Events::SimpleEvent
|
6
|
-
include Decidim::
|
7
|
-
|
8
|
-
delegate :author, to: :comment
|
9
|
-
|
10
|
-
def resource_path
|
11
|
-
resource_locator.path(url_params)
|
12
|
-
end
|
13
|
-
|
14
|
-
def resource_url
|
15
|
-
resource_locator.url(url_params)
|
16
|
-
end
|
17
|
-
|
18
|
-
def resource_text
|
19
|
-
comment.body
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def comment
|
25
|
-
@comment ||= Decidim::Comments::Comment.find(extra[:comment_id])
|
26
|
-
end
|
27
|
-
|
28
|
-
def url_params
|
29
|
-
{ anchor: "comment_#{comment.id}" }
|
30
|
-
end
|
6
|
+
include Decidim::Comments::CommentEvent
|
31
7
|
end
|
32
8
|
end
|
33
9
|
end
|
@@ -3,31 +3,7 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Comments
|
5
5
|
class CommentCreatedEvent < Decidim::Events::SimpleEvent
|
6
|
-
include Decidim::
|
7
|
-
|
8
|
-
delegate :author, to: :comment
|
9
|
-
|
10
|
-
def resource_path
|
11
|
-
resource_locator.path(url_params)
|
12
|
-
end
|
13
|
-
|
14
|
-
def resource_url
|
15
|
-
resource_locator.url(url_params)
|
16
|
-
end
|
17
|
-
|
18
|
-
def resource_text
|
19
|
-
comment.body
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def comment
|
25
|
-
@comment ||= Decidim::Comments::Comment.find(extra[:comment_id])
|
26
|
-
end
|
27
|
-
|
28
|
-
def url_params
|
29
|
-
{ anchor: "comment_#{comment.id}" }
|
30
|
-
end
|
6
|
+
include Decidim::Comments::CommentEvent
|
31
7
|
end
|
32
8
|
end
|
33
9
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen-string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Comments
|
5
|
+
# This module is used to be included in events triggered by comments.
|
6
|
+
#
|
7
|
+
module CommentEvent
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
include Decidim::Events::AuthorEvent
|
10
|
+
|
11
|
+
included do
|
12
|
+
delegate :author, to: :comment
|
13
|
+
|
14
|
+
def resource_path
|
15
|
+
resource_locator.path(url_params)
|
16
|
+
end
|
17
|
+
|
18
|
+
def resource_url
|
19
|
+
resource_locator.url(url_params)
|
20
|
+
end
|
21
|
+
|
22
|
+
def resource_text
|
23
|
+
comment.formatted_body
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def comment
|
29
|
+
@comment ||= Decidim::Comments::Comment.find(extra[:comment_id])
|
30
|
+
end
|
31
|
+
|
32
|
+
def url_params
|
33
|
+
{ anchor: "comment_#{comment.id}" }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -3,31 +3,7 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Comments
|
5
5
|
class ReplyCreatedEvent < Decidim::Events::SimpleEvent
|
6
|
-
include Decidim::
|
7
|
-
|
8
|
-
delegate :author, to: :comment
|
9
|
-
|
10
|
-
def resource_path
|
11
|
-
resource_locator.path(url_params)
|
12
|
-
end
|
13
|
-
|
14
|
-
def resource_url
|
15
|
-
resource_locator.url(url_params)
|
16
|
-
end
|
17
|
-
|
18
|
-
def resource_text
|
19
|
-
comment.body
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def comment
|
25
|
-
@comment ||= Decidim::Comments::Comment.find(extra[:comment_id])
|
26
|
-
end
|
27
|
-
|
28
|
-
def url_params
|
29
|
-
{ anchor: "comment_#{comment.id}" }
|
30
|
-
end
|
6
|
+
include Decidim::Comments::CommentEvent
|
31
7
|
end
|
32
8
|
end
|
33
9
|
end
|
@@ -3,31 +3,7 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Comments
|
5
5
|
class UserMentionedEvent < Decidim::Events::SimpleEvent
|
6
|
-
include Decidim::
|
7
|
-
|
8
|
-
delegate :author, to: :comment
|
9
|
-
|
10
|
-
def resource_path
|
11
|
-
resource_locator.path(url_params)
|
12
|
-
end
|
13
|
-
|
14
|
-
def resource_url
|
15
|
-
resource_locator.url(url_params)
|
16
|
-
end
|
17
|
-
|
18
|
-
def resource_text
|
19
|
-
comment.body
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def comment
|
25
|
-
@comment ||= Decidim::Comments::Comment.find(extra[:comment_id])
|
26
|
-
end
|
27
|
-
|
28
|
-
def url_params
|
29
|
-
{ anchor: "comment_#{comment.id}" }
|
30
|
-
end
|
6
|
+
include Decidim::Comments::CommentEvent
|
31
7
|
end
|
32
8
|
end
|
33
9
|
end
|
@@ -41,6 +41,7 @@ module Decidim
|
|
41
41
|
|
42
42
|
def participatory_space
|
43
43
|
return root_commentable if root_commentable.is_a?(Decidim::Participable)
|
44
|
+
|
44
45
|
root_commentable.participatory_space
|
45
46
|
end
|
46
47
|
|
@@ -105,6 +106,12 @@ module Decidim
|
|
105
106
|
.map(&:author).pluck(:id).flatten.compact.uniq
|
106
107
|
end
|
107
108
|
|
109
|
+
def can_participate?(user)
|
110
|
+
return true unless root_commentable&.respond_to?(:can_participate?)
|
111
|
+
|
112
|
+
root_commentable.can_participate?(user)
|
113
|
+
end
|
114
|
+
|
108
115
|
private
|
109
116
|
|
110
117
|
# Private: Check if commentable can have comments and if not adds
|
@@ -23,6 +23,7 @@ module Decidim
|
|
23
23
|
# Private: check if the comment and the author have the same organization
|
24
24
|
def author_and_comment_same_organization
|
25
25
|
return unless author.present? && comment.present?
|
26
|
+
|
26
27
|
errors.add(:comment, :invalid) unless author.organization == comment.organization
|
27
28
|
end
|
28
29
|
end
|
@@ -18,6 +18,7 @@ module Decidim
|
|
18
18
|
related_object = comment.root_commentable
|
19
19
|
next unless related_object
|
20
20
|
next unless check_participatory_space(@resource, related_object)
|
21
|
+
|
21
22
|
cumulative_users << comment.decidim_author_id
|
22
23
|
quantity_users << comment.decidim_author_id if comment.created_at >= start_time
|
23
24
|
end
|
@@ -32,6 +33,7 @@ module Decidim
|
|
32
33
|
def check_participatory_space(participatory_space, related_object)
|
33
34
|
return related_object.participatory_space == participatory_space if related_object.respond_to?(:participatory_space)
|
34
35
|
return related_object == participatory_space if related_object.is_a?(Decidim::Participable)
|
36
|
+
|
35
37
|
false
|
36
38
|
end
|
37
39
|
|
@@ -15,6 +15,7 @@ module Decidim
|
|
15
15
|
query.each do |key, results|
|
16
16
|
cumulative_value = results[:cumulative]
|
17
17
|
next if cumulative_value.zero?
|
18
|
+
|
18
19
|
quantity_value = results[:quantity] || 0
|
19
20
|
space_type, space_id, category_id, related_object_type, related_object_id = key
|
20
21
|
record = Decidim::Metric.find_or_initialize_by(day: @day.to_s, metric_type: @metric_name,
|
@@ -44,6 +45,8 @@ module Decidim
|
|
44
45
|
next grouped_comments unless related_object
|
45
46
|
|
46
47
|
group_key = generate_group_key(related_object)
|
48
|
+
next grouped_comments unless group_key
|
49
|
+
|
47
50
|
grouped_comments[group_key] ||= { cumulative: 0, quantity: 0 }
|
48
51
|
grouped_comments[group_key][:cumulative] += 1
|
49
52
|
grouped_comments[group_key][:quantity] += 1 if comment.created_at >= start_time
|
@@ -70,6 +73,8 @@ module Decidim
|
|
70
73
|
# Generates a group key from the related object of a Comment
|
71
74
|
def generate_group_key(related_object)
|
72
75
|
participatory_space = retrieve_participatory_space(related_object)
|
76
|
+
return unless participatory_space
|
77
|
+
|
73
78
|
category_id = related_object.respond_to?(:category) ? related_object.category.try(:id) : ""
|
74
79
|
group_key = []
|
75
80
|
group_key += [participatory_space.class.name, participatory_space.id]
|
@@ -9,6 +9,7 @@ module Decidim
|
|
9
9
|
# resource - A commentable resource
|
10
10
|
def comments_for(resource)
|
11
11
|
return unless resource.commentable?
|
12
|
+
|
12
13
|
content_for :expanded do
|
13
14
|
inline_comments_for(resource)
|
14
15
|
end
|
@@ -21,6 +22,7 @@ module Decidim
|
|
21
22
|
# Returns a div which contain a RectComponent
|
22
23
|
def inline_comments_for(resource)
|
23
24
|
return unless resource.commentable?
|
25
|
+
|
24
26
|
commentable_type = resource.commentable_type
|
25
27
|
commentable_id = resource.id.to_s
|
26
28
|
node_id = "comments-for-#{commentable_type.demodulize}-#{commentable_id}"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
shared_context "when it's a comment event" do
|
6
|
+
include Decidim::ComponentPathHelper
|
7
|
+
include Decidim::SanitizeHelper
|
8
|
+
|
9
|
+
include_context "when a simple event"
|
10
|
+
|
11
|
+
let(:resource) { comment.commentable }
|
12
|
+
|
13
|
+
let(:comment) { create :comment }
|
14
|
+
let(:comment_author) { comment.author }
|
15
|
+
let(:comment_author_name) { decidim_html_escape comment.author.name }
|
16
|
+
|
17
|
+
let(:extra) { { comment_id: comment.id } }
|
18
|
+
let(:resource_title) { decidim_html_escape resource.title }
|
19
|
+
end
|
20
|
+
|
21
|
+
shared_examples_for "a comment event" do
|
22
|
+
it_behaves_like "a simple event"
|
23
|
+
|
24
|
+
describe "author" do
|
25
|
+
it "returns the comment author" do
|
26
|
+
expect(subject.author).to eq(comment_author)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "resource_text" do
|
31
|
+
it "outputs the comment body" do
|
32
|
+
expect(subject.resource_text).to eq comment.formatted_body
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
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.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -18,56 +18,56 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.19.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.19.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: jquery-rails
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '4.
|
35
|
+
version: '4.3'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '4.
|
42
|
+
version: '4.3'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: decidim-admin
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - '='
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.
|
49
|
+
version: 0.19.0
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - '='
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
56
|
+
version: 0.19.0
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: decidim-dev
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - '='
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.
|
63
|
+
version: 0.19.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.19.0
|
71
71
|
description: Pluggable comments system for some components.
|
72
72
|
email:
|
73
73
|
- josepjaume@gmail.com
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- app/commands/decidim/comments/vote_comment.rb
|
89
89
|
- app/events/decidim/comments/comment_by_followed_user_event.rb
|
90
90
|
- app/events/decidim/comments/comment_created_event.rb
|
91
|
+
- app/events/decidim/comments/comment_event.rb
|
91
92
|
- app/events/decidim/comments/reply_created_event.rb
|
92
93
|
- app/events/decidim/comments/user_mentioned_event.rb
|
93
94
|
- app/forms/decidim/comments/comment_form.rb
|
@@ -204,6 +205,7 @@ files:
|
|
204
205
|
- lib/decidim/comments/query_extensions.rb
|
205
206
|
- lib/decidim/comments/test.rb
|
206
207
|
- lib/decidim/comments/test/factories.rb
|
208
|
+
- lib/decidim/comments/test/shared_examples/comment_event.rb
|
207
209
|
- lib/decidim/comments/test/shared_examples/create_comment_context.rb
|
208
210
|
- lib/decidim/comments/version.rb
|
209
211
|
homepage: https://github.com/decidim/decidim
|